【SqlServer】MSSQL计算年月日周季度等相关信息
2021/7/28 19:40:12
本文主要是介绍【SqlServer】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月为例(“首周”为红框圈出的日期):
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
这篇关于【SqlServer】MSSQL计算年月日周季度等相关信息的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-08Docker下的SqlServer发布订阅启用
- 2023-06-05Docker安装MS SQL Server并使用Navicat远程连接
- 2023-05-25深入浅出 SQL Server CDC 数据同步
- 2023-05-12通过空间占用和执行计划了解SQL Server的行存储索引
- 2023-04-24以SQLserver为例的Dapper详细讲解
- 2022-11-30SQL server高级函数查询
- 2022-11-26SQL SERVER数据库服务器CPU不能全部利用原因分析
- 2022-11-21SQL Server 时间算差值/常用函数
- 2022-11-20调试Archery连接SQL Server提示驱动错误
- 2022-10-22SQL Server 完整、差异备份+完整、差异还原(详细讲解,规避错误)