YTD、MTD、WTD 总计的 SQL 查询

标签 sql sql-server date select sql-server-2008-r2

我希望这个查询能够自动知道今天的日期和时间以及今年(或月份)(或星期)的第一天......

SELECT TicketID
FROM   Ticket
WHERE     (Ticket.DtCheckOut > '1/1/2011 12:00:00 AM') 
      AND (Ticket.DtCheckOut < '8/27/2011 12:00:00 AM')

我知道它会以某种形式使用GETDATE(),但我保证你不会想看到我想出的东西!

这是我在 GETDATE() MDSN: GETDATE(Transact-SQL) 上读到的内容

我环顾四周和谷歌 - 没有找到任何“干净”的东西 - 所以任何输入都会很棒!

最佳答案

DECLARE @now DATETIME
SET @now = GETDATE()

SELECT
    DATEADD(yy, DATEDIFF(yy, 0, @now), 0) AS FirstDayOfYear,
    DATEADD(mm, DATEDIFF(mm, 0, @now), 0) AS FirstDayOfMonth,
    DATEADD(DAY, -DATEDIFF(dd, @@DATEFIRST - 1, @now) % 7, @now) AS FirstDayOfWeek

@@DATEFIRST是 SQL Server 一周的第一天,如果您使用美国英语,则默认为星期日。

关于YTD、MTD、WTD 总计的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211354/

相关文章:

mysql - 我的查询说我的专栏不存在

sql - 如何进行嵌套SQL选择计数

sql - 替换字符串 SQL

sql-server - 是否可以通过明文类型确定 ENCRYPTBYKEY 最大返回值?

c - 我可以使用 C 中的什么函数来单独获取与时间分开的日期?

Javascript 日期函数不起作用

php - 使用 PHP 创建最近 30 天的数组

php - 获取mysql中部分填充的数据

java - 如何在进行某些验证时锁定 Oracle 中的记录

sql-server - Pentaho 连接问题