SQL:如何从月底算起第二天
例如: 如果我今天(1月26日)运行此查询,我的结果将被添加到+1天,即1月27日SQL:如何从月底算起第二天,sql,sql-server,Sql,Sql Server,例如: 如果我今天(1月26日)运行此查询,我的结果将被添加到+1天,即1月27日 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语句(如上
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语句(如上所述)。获取下个月的开始日期:
SELECT DATEADD(MM, DATEDIFF(MM, 0, GETDATE()) + 1, 0)
这将返回成员
,其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))
我想你的
datetime
是以UTCdatetime
的形式存储在你的数据库中的,而且你在西半球的某个地方,在UTC时间之后调用Month
,比如说,美国东部时间9:30EDT(或8:30CDT)返回2
,匹配月份(DateAdd(dd,1,GetDate())
大多数情况下,您希望将datetime
存储在数据库中作为UTC,这意味着-大多数情况下-您希望以相同的方式编写查询(即使用GetUtcDate
)
作为测试,用
GetUtcDate
代替GetDate
重写查询,看看结果是否有变化。这是一个很好的观点,检查您正在使用的数据类型,它可以让您了解如何解决问题。
SELECT addedon
FROM #member
WHERE
addedon >= DATEADD(DD, DATEDIFF(DD, 0, GETDATE()) + 1, 0)
AND addedon < DATEADD(DD, DATEDIFF(DD, 0, GETDATE()) + 2, 0)