SQL 选择当前月份的记录

use*_*397 0 sql t-sql sql-server where-clause date-arithmetic

我有一个字段名称教科书日期字段名称NewMonth
数据像这样

TextBook     NewMonth
ABC          2020-01-01
HDS          2020-01-30 
ZXY          2020-02-15
FGD          2020-02-01
YTS          2020-04-02
HFH          2020-04-05 
EDD          2020-03-25
Run Code Online (Sandbox Code Playgroud)

我的目标是选择当月的记录 (2020-04-XX)

TextBook     NewMonth
YTS          2020-04-02
HFH          2020-04-05
Run Code Online (Sandbox Code Playgroud)

我的查询并不起作用。有人可以纠正我的疑问吗?谢谢

SELECT TextBook, NewMonth
   from  Store
   where NewMOnth >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -1, current_timestamp)), 0)
Run Code Online (Sandbox Code Playgroud)

我认为-1代表当前月份,-2代表过去2个月,-3代表过去3个月等等

GMB*_*GMB 5

我的目标是选择当月的记录 (2020-04-XX)

这是一种选择:

where NewMonth >= datefromparts(year(getdate()), month(getdate()), 1)
Run Code Online (Sandbox Code Playgroud)

如果您也需要上限:

where 
    NewMonth >= datefromparts(year(getdate()), month(getdate()), 1)
    and NewMonth < dateadd(month, 1, datefromparts(year(getdate()), month(getdate()), 1))
Run Code Online (Sandbox Code Playgroud)

如果您想要上个月:

where 
    NewMonth >= dateadd(month, -1, datefromparts(year(getdate()), month(getdate()), 1))
    and NewMonth < datefromparts(year(getdate()), month(getdate()), 1)
Run Code Online (Sandbox Code Playgroud)

或者两个月前:

where 
    NewMonth >= dateadd(month, -2, datefromparts(year(getdate()), month(getdate()), 1))
    and NewMonth < dateadd(month, -1, datefromparts(year(getdate()), month(getdate()), 1))
Run Code Online (Sandbox Code Playgroud)