ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【SqlServer】MSSQL计算年月日周季度等相关信息

2021-07-28 11:31:52  阅读:301  来源: 互联网

标签:07 23 SqlServer dateNow 2021 print 给定日期 年月日 MSSQL


MSSQLMSSQL计算年月日周季度等相关信息

定义变量

declare @dateNow datetime
declare @dateCpr1 datetime
declare @dateCpr2 datetime

set @dateNow = getdate()                --当前日期(下文以 2021-07-28 09:04:59 为例)
set @dateCpr1 = '2021-02-27 23:59:59'   --给定日期1
set @dateCpr2 = '2021-07-27 10:26:00'   --给定日期2

1、常用日期格式化字符串

print CONVERT(varchar(100), @dateNow, 20)
print CONVERT(varchar(100), @dateNow, 23)
print CAST(@dateNow AS DATE)
print CONVERT(varchar(100), @dateNow, 24)

输出:

2021-07-28 09:04:59
2021-07-28
2021-07-28
09:04:59

2、给定日期的年、月、日、小时、分钟、秒、毫秒、季度、一年中第几天、一年中第几周、一周中的第几天(周天为一周中第一天算起)

print DatePart(yy,@dateNow)
print DatePart(mm,@dateNow)
print DatePart(dd,@dateNow)
print DatePart(hh,@dateNow)
print DatePart(mi,@dateNow)
print DatePart(ss,@dateNow)
print DatePart(ms,@dateNow)

print DatePart(qq,@dateNow)
print DatePart(dy,@dateNow)
print DatePart(wk,@dateNow)
print DatePart(dw,@dateNow)

输出:

2021
7
28
9
4
59

3
209
31
4

3、两个给定日期是否是同一天

if(CONVERT(varchar(100), @dateCpr1, 23) = CONVERT(varchar(100), @dateCpr2, 23))
	print 1;
else
	print 0;

输出:

0

4、给定日期是否为今天

if(CONVERT(varchar(100), @dateNow, 23) = CONVERT(varchar(100), @dateCpr1, 23))
	print 1;
else
	print 0;

输出:

0

5、日期2 是否早于 日期1

if(@dateCpr1 > @dateCpr2)
	print 1
else
	print 0

输出:

0

6、日期2 是否晚于 日期1

if(@dateCpr2 > @dateCpr1)
	print 1
else
	print 0

输出:

0

7、明天

print CONVERT(varchar(100), @dateNow+1, 23)

输出:

2021-07-29

8、昨天

print CONVERT(varchar(100), @dateNow-1, 23)

输出:

2021-07-27

9、给定日期的“当天”开始、中午、结束时间

print CONVERT(varchar(100), @dateNow, 23) + ' 0:00:00.000'
print CONVERT(varchar(100), @dateNow, 23) + ' 12:00:00.000'
print CONVERT(varchar(100), @dateNow, 23) + ' 23:59:59.999'

输出:

2021-07-28 0:00:00.000
2021-07-28 12:00:00.000
2021-07-28 23:59:59.999

10、给定日期所在“周”的开始、结束日期

print DATEADD(DAY, 2 - DATEPART(WEEKDAY, @dateNow), CAST(@dateNow AS DATE))
print DATEADD(DAY, 8 - DATEPART(WEEKDAY, @dateNow), CAST(@dateNow AS DATE))

输出:

2021-07-26
2021-08-01

11、给定日期所在“月”的开始、结束日期

print DATEADD(DAY, 1, EOMONTH(@dateNow, -1))
print EOMONTH (@dateNow)

输出:

2021-07-01
2021-07-31

12、给定日期所在“季度”的开始、结束日期

print CAST(DATEADD(quarter, DATEDIFF(quarter, 0, @dateNow), 0) as DATE)
print CAST(DATEADD (DAY, -1, DATEADD(quarter, DATEDIFF(quarter, 0, GETDATE()) +1, 0)) as DATE)

输出:

2021-07-01
2021-09-30

13、给定日期所在“年”的开始、结束日期

print CAST(DATEADD(YEAR, DATEDIFF(YEAR, 0, @dateNow), 0)as DATE)
print CAST(DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, -1) as DATE)

输出:

2021-01-01
2021-12-31

14、给定日期所在月份共有多少天

print DAY(EOMONTH(@dateNow))

输出:

31

15、给定日期是当年的第几周

print DATEPART(week, @dateNow)

输出:

31

16、是否是工作日

set @weekNo = datepart(weekday , @dateNow)
if(@weekNo <> 1 and @weekNo <> 7)
	print 1
else
	print 0

输出:

1

17、是否是周未

declare @weekNo int
set @weekNo = datepart(weekday , @dateNow)
if(@weekNo = 1 or @weekNo = 7)
	print 1
else
	print 0

输出:

0

18、获取给定日期所在月份的首周(若首周不完整,则向后取周)中指定周几的日期

以2021年7月为例(“首周”为红框圈出的日期):
image

declare @whichWeekDay int  --周几(值域:[1,7],表示周一到周天)
set @whichWeekDay =1

declare @firstDayOfMonth datetime
set @firstDayOfMonth = DATEADD(DAY, 1, EOMONTH(@dateNow, -1))
print CAST(@firstDayOfMonth + (7 + @whichWeekDay + 1 - datepart(weekday, @firstDayOfMonth)) % 7 AS DATE)

输出:

2021-07-05

标签:07,23,SqlServer,dateNow,2021,print,给定日期,年月日,MSSQL
来源: https://www.cnblogs.com/seanyan/p/15069637.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有