我在查询中遇到过这个问题:
[date_start] >= DATEADD(dd, -DAY(GETDATE()) + 1, DATEDIFF(dd, 0, GETDATE()))
我知道这部分是从字段中删除时间元素,但有人可以向我解释这是如何在不使用'月'功能的情况下返回当前月份数据的吗?
答案 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
。