datediff(dd,...返回月份数据

时间:2017-07-17 21:39:16

标签: sql sql-server

我在查询中遇到过这个问题:

[date_start] >= DATEADD(dd, -DAY(GETDATE()) + 1, DATEDIFF(dd, 0, GETDATE()))

我知道这部分是从字段中删除时间元素,但有人可以向我解释这是如何在不使用'月'功能的情况下返回当前月份数据的吗?

1 个答案:

答案 0 :(得分:0)

需要当月的当天(日(GetDate())+ 1)并从第0天起的整天数减去它。

[Date_start] >= 
DATEADD(dd, --Add Integer X to DateTime Y

-DAY(GETDATE()) + 1,  --X = - Current Day of Month + 1

DATEDIFF(dd, 0, GETDATE()) --Y = The number of days between day 0 and now.
                           --(in whole days to round out the 'time' part of the datetime)

没有标准功能来实现这一目标。

你的直觉并不比我见过的其他方法更不直观,尽管在日期添加()中使用负数是令人困惑的,因为依赖于{{{{{ 1}}从datediff()隐式转换为int

其他方法:SQL Server Helper - Date Functions