SQL:如何从月底算起第二天

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语句(如上

例如:

如果我今天(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 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
是以UTC
datetime
的形式存储在你的数据库中的,而且你在西半球的某个地方,在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)