SQLServer怎么查询每年每个月第一天或最后一天零点零分零秒的数据,

SQL Server怎么查询每年每个月第一天或最后一天零点零分零秒的数据,比如做个控件,单击选择2021年,查询出来2021年1-12月每月第一天的数据,单击选择2022年,查询出来2022年1-12月每月第一天的数据,

FineReport LBJ23 发布于 2023-10-17 13:25 (编辑于 2023-10-17 13:58)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2023-10-17 13:28(编辑于 2023-10-17 13:29)

SELECT *  
FROM your_table
WHERE CONVERT(DATE, your_date_column) = DATEADD(MONTH, DATEDIFF(MONTH, 0, your_date_column), 0)

这个查询使用了DATEADD和DATEDIFF函数来找到每个月的第一天。DATEDIFF函数计算两个日期之间的差值,然后DATEADD函数将这个差值添加到一个基准日期(这里使用0作为基准日期,表示1900-01-01)上,从而得到每个月的第一天。

如果要查询每个月的最后一天,可以稍微修改一下查询:

SELECT *  
FROM your_table
WHERE CONVERT(DATE, your_date_column) = DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, your_date_column) + 1, 0))

这个查询同样使用了DATEADD和DATEDIFF函数,但是通过将下个月的第一天减去一天,得到了本月的最后一天。

请注意,以上示例中的your_table和your_date_column需要替换为你实际使用的表名和日期列名。

  • LBJ23 LBJ23(提问者) 想实现的是每年每月,单击查询2022年出来1-12月第一天的数据,单击查询2023年出来1-12月第一天的数据,
    2023-10-17 13:49 
  • 用户k6280494 用户k6280494 回复 LBJ23(提问者) where 后面在加条件啊
    2023-10-17 14:14 
最佳回答
0
快乐星光Lv5中级互助
发布于2023-10-17 13:40

补充一下:月最后一天可以用EOMONTH函数(需要sql2012以上):

select EOMONTH(GETDATE()) AS '本月最后一天'

select EOMONTH(GETDATE(),1) AS '下月最后一天'

select EOMONTH(GETDATE(),-1) AS '上月最后一天'

最佳回答
0
ID1208Lv6高级互助
发布于2023-10-17 13:45(编辑于 2023-10-17 14:10)

image.png

select * from table

where year(RQ)='2021'

and day(RQ)='01'

最佳回答
0
CD20160914Lv8专家互助
发布于2023-10-17 14:04

image.png

where 1=1

and yearcode=${year_code}

and day(时间字段)=1

年份为参数的年,日为1号的不就是每月1号的数据了?

  • 5关注人数
  • 233浏览人数
  • 最后回答于:2023-10-17 14:10
    请选择关闭问题的原因
    确定 取消
    返回顶部