示例:
如果我今天(1月26日)运行此查询,我的结果将在1月27日的+1天加入。
select addedon
from member
Where Day(addedon) = Day(DateAdd(dd, 1, GetDate()))
and Month(addedon) = Month(DateAdd(dd, 1, GetDate()))
但是,当我在1月31日运行此查询时,它会给我1月1日的结果,而不是2月1日。
请帮忙!请注意,我只能在我的应用程序中使用简单的select语句(如上所述)。
答案 0 :(得分:1)
要开始下个月:
SELECT DATEADD(MM, DATEDIFF(MM, 0, GETDATE()) + 1, 0)
这将返回member
addedon
落在下个月的第一天。
SELECT addedon
FROM member
WHERE
addedon >= DATEADD(MM, DATEDIFF(MM, 0, GETDATE()) + 1, 0)
AND addedon < DATEADD(DD, 1, DATEADD(MM, DATEDIFF(MM, 0, GETDATE()) + 1, 0))
这将返回member
第二天addedon
落下的SELECT addedon
FROM #member
WHERE
addedon >= DATEADD(DD, DATEDIFF(DD, 0, GETDATE()) + 1, 0)
AND addedon < DATEADD(DD, DATEDIFF(DD, 0, GETDATE()) + 2, 0)
:
{{1}}
答案 1 :(得分:1)
我猜你的datetime
- 非常典型 - 以UTC datetime
的形式存储在您的数据库中,并且您在西半球的某个地方,并且调用{{例如,在9:30EDT(或8:30CDT)之后的UTC时间上,1}}返回Month
,匹配2
。
大多数情况下,您希望将Month(DateAdd(dd, 1, GetDate()))
作为UTC存储在数据库中,这意味着 - 大部分时间 - 您希望以相同的方式编写查询(即使用datetime
)。
作为测试,使用GetUtcDate
代替GetUtcDate
重写您的查询,并查看您的结果是否发生了变化。