【问题标题】:Looking for Query for NEXT_DAY for Oracle to SQL server 2012 migration为 Oracle 到 SQL Server 2012 迁移寻找 NEXT_DAY 查询
【发布时间】:2013-06-25 15:45:45
【问题描述】:

在 SQL SERVER 2012 中查找代码以找出 ORDERS 表中所有 ORDERDATE 的下一个“星期三”。我想出了以下内容,但它只给出了 Orderdate + 7 天。请帮我解决这个问题。

SELECT DATEADD(DD,7, CONVERT(Datetime, OrderDate, 101))
FROM Orders

【问题讨论】:

    标签: sql sql-server-2012 sql-server-2012-express dateadd


    【解决方案1】:

    你可以用这个:

    SELECT CASE WHEN DATENAME(WEEKDAY,OrderDate) = 'Wednesday' 
           THEN DATEADD(DAY,7,OrderDate)
           ELSE DATEADD(DAY,(18-(@@DATEFIRST+DATEPART(WEEKDAY,OrderDate)))%7,OrderDate)
           END
    FROM Orders
    

    【讨论】:

    • 但即使日期已过 4 月 1 日,此查询仍会返回 '04/01/2009' (mm/dd/yyyy)。意味着 - 即使日期是该周的 2、3、4,它也会返回 '04/01/2009' timeanddate.com/calendar/?year=2009
    • 现在我做对了。谢谢你。但是当日期本身是 '04/01/2009' 时,它会返回相同的日期。但我正在寻找下一个事件,所以它应该返回我 '04/08/2009' 为 '04/01/2009'
    • @PrincessS 好吧,现在这是一个丑陋的查询,但我认为它有效。
    • @PrincessS 是的,那里缺少END(不过很容易发现)
    • 我明白了。感谢您的耐心和帮助。我对 SQL 非常陌生。自己刚开始学习,还没接触过CASE。
    猜你喜欢
    • 1970-01-01
    • 2015-10-28
    • 2013-10-02
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2015-04-17
    • 2018-11-26
    相关资源
    最近更新 更多