sqlsever获取当月所有日期,有简单写法吗

返回一个日期列

SQL GGBoy 发布于 2024-8-15 15:12 (编辑于 2024-8-15 15:13)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
CovidLv3高级互助
发布于2024-8-15 15:13(编辑于 2024-8-15 15:26)

declare @date datetime 

set @date='2013-08-31'

select convert(char(7),@date,120)+'-'+right('0'+convert(varchar(2),number),2) as [日期格式1] 

,ltrim(year(@date))+right(100+month(@date),2)+right('0'+ltrim(number),2) as [日期格式2] 

from master..spt_values with(nolock) 

where type='P' and number>=1 

--and number<=datediff(dd,@date,dateadd(mm,1,@date)) --对于mssql而言该语句不试用于2013-08-31的情况,这时由于9月没有31号,固计算出来的天数是30天 

and number<=datediff(dd,convert(char(7),@date,120)+'-01',convert(char(7),dateadd(mm,1,@date),120)+'-01')--转换为1号来计算天数 

------------

帮你改了一下

select convert(char(7),convert(nvarchar(10),DATEADD(DAY,-1,DATEADD(MONTH,1,CONVERT(nvarchar(7),GETDATE(),120)+'-01')),120),120)+'-'+right('0'+convert(varchar(2),number),2) as [日期格式1] 

,ltrim(year(convert(nvarchar(10),DATEADD(DAY,-1,DATEADD(MONTH,1,CONVERT(nvarchar(7),GETDATE(),120)+'-01')),120)))+right(100+month(convert(nvarchar(10),DATEADD(DAY,-1,DATEADD(MONTH,1,CONVERT(nvarchar(7),GETDATE(),120)+'-01')),120)),2)+right('0'+ltrim(number),2) as [日期格式2] 

from master..spt_values with(nolock) 

where type='P' and number>=1 

--and number<=datediff(dd,convert(nvarchar(10),DATEADD(DAY,-1,DATEADD(MONTH,1,CONVERT(nvarchar(7),GETDATE(),120)+'-01')),120),dateadd(mm,1,convert(nvarchar(10),DATEADD(DAY,-1,DATEADD(MONTH,1,CONVERT(nvarchar(7),GETDATE(),120)+'-01')),120))) --对于mssql而言该语句不试用于2013-08-31的情况,这时由于9月没有31号,固计算出来的天数是30天 

and number<=datediff(dd,convert(char(7),convert(nvarchar(10),DATEADD(DAY,-1,DATEADD(MONTH,1,CONVERT(nvarchar(7),GETDATE(),120)+'-01')),120),120)+'-01',convert(char(7),dateadd(mm,1,convert(nvarchar(10),DATEADD(DAY,-1,DATEADD(MONTH,1,CONVERT(nvarchar(7),GETDATE(),120)+'-01')),120)),120)+'-01')

image.png

最佳回答
0
ID1208Lv6高级互助
发布于2024-8-15 15:19
最佳回答
0
华莉星宸Lv7资深互助
发布于2024-8-15 15:21

建立一个日期的维度表

使用的时候直接查询此表很方便的

-----------------------

字段如下

年 月  日期 周。。。。。

  • GGBoy GGBoy(提问者) 要是不建表的话,有简便的sql吗
    2024-08-15 15:23 
  • 华莉星宸 华莉星宸 回复 GGBoy(提问者) 我习惯是建个日期维度表,不需要每次写SQL,主要是使用方便,灵活配置
    2024-08-15 15:29 
  • 3关注人数
  • 175浏览人数
  • 最后回答于:2024-8-15 15:26
    请选择关闭问题的原因
    确定 取消
    返回顶部