龙空技术网

DATE #2.1 MS-SQL数据库时间类型

狮子哥哥520 142

前言:

现时我们对“sql判断时间在某个范围怎么写”大约比较讲究,看官们都需要了解一些“sql判断时间在某个范围怎么写”的相关文章。那么小编也在网络上收集了一些有关“sql判断时间在某个范围怎么写””的相关资讯,希望兄弟们能喜欢,兄弟们一起来了解一下吧!

创建一个测试表:

 create table DATE_ITEM_STAMP (   C1 DATE,   C2 DATETIME,   C3 DATETIME2,   C4 TIME );
1. MS-SQL时间类型、存储

Date: 存入的数据格式为:yyyy-mm-dd

Time: 存入的数据格式为:HH:mm:ss

DateTime: 存入的数据格式为:yyyy-mm-dd hh:mm:ss.fff(精确到1毫秒)

DateTime2 :存入的数据格式为:yyyy-mm-dd hh:mm:ss.fffffff(精确到0.1微秒)

DateTimeOffset: 存入的数据格式为:yyyy-mm-dd hh:mm:ss(精确到0.1为微秒)

dateTime字段类型赋值要用 GETDATE()

dateTime2字段类型赋值要用 SYSDATETIME()

datetime2支持datetime.minvalue,即0001/01/01

//函数插入 INSERT INTO dbo.DATE_ITEM_STAMP (C1, C2, C3, C4) VALUES (GETDATE(), GETDATE(), SYSDATETIME(), GETDATE())//日期字符串插入 INSERT INTO DATE_ITEM_STAMP (C1, C2, C3, C4) VALUES ('2021-06-25', '2021-06-25 22:57:13.54', '2021-06-25 22:57:13.549393', '22:57:13.54')
2.ms-sql声明日期变量
--声明临时变量DECLARE @Now_Date5 DATETIME --声明临时变量且赋初值 DECLARE @Now_Date4 DATETIME = '2021-06-04 02:02:03'select @Now_Date4 -- console.log('2021-06-04 2:02:03')select @Now_Date5 -- console.log(null) --给变量赋值 SET @Now_Date5 = '2020-05-06 12:02:03'select @Now_Date4 -- console.log('2021-06-04 2:02:03')SELECT @Now_Date5 -- console.log('2020-05-06 12:02:03')
3.ms-sql获取系统当前日期、指定日期年、月、日部分3.1 获取当前日期

函数:GETDATE() 获取当前系统时间 DateTime

select GETDATE()//DateTime: 2021-06-25 23:13:06.393

函数:SYSDATETIME()获取当前系统时间 DateTime2

SELECT SYSDATETIME()//DateTime: 2021-06-25 23:12:35.556482

函数:CONVERT(data_type(length),data_to_be_converted,style) 格式化当前日期为字符串

SELECT CONVERT(varchar,GETDATE(),120)//VARCHAR: 2021-06-25 23:15:07
3.2. 获取当前年

函数:DATENAME(patten,日期)、DATEPART(patten,日期)、YEAR(日期) 获取当前时间年

DECLARE @Now_Date_Time DATETIME SET @Now_Date_Time = '2020-05-06 12:02:03'select DATENAME(YYYY,@Now_Date_Time) -- 字符串:console.log('2020')select DATENAME(YEAR,@Now_Date_Time) -- 字符串:console.log('2020')select DATEPART(YYYY,@Now_Date_Time) -- 数字:console.log('2020')select DATEPART(YEAR,@Now_Date_Time) -- 数字:console.log('2020')select YEAR(@Now_Date_Time)          -- 数字:console.log('2020')
3.3.获取当前月

函数:DATENAME(MM,日期)、DATEPART(patten,日期)、MONTH(日期) 获取当前时间月

 select DATENAME(MM,GETDATE()) select DATENAME(MONTH,GETDATE()) select DATEPART(MM,GETDATE()) select DATEPART(MONTH,GETDATE()) select MONTH(@Now_Date)
3.4.获取当前日期

函数:DATENAME(MM,日期)、DATEPART(patten,日期)、DAY(日期) 获取当前时间日

DECLARE @Now_Date1 DATE = '2021-06-05'select DATENAME(DAY,@Now_Date1)select DATENAME(D,@Now_Date1)select DATENAME(DD,@Now_Date1)select DATEPART(D,@Now_Date1)select DATEPART(DD,@Now_Date1)select DATEPART(DAY,@Now_Date1)select DAY(GETDATE())
3.5. 获取当前年月
select CONVERT(varchar(6),GETDATE(),112)select CONVERT(varchar(7),GETDATE(),120)
3.6.获取当前年月日
select CONVERT(varchar(8),GETDATE(),112) select CONVERT(varchar(10),GETDATE(),120)
4.日期常用函数

GETDATE() :获取当前时间,时间格式默认。

DATENAME:参数为两个,取值区间 interval 和时间 datedate 就是时间;

interval 包括 年,月,日,星期等

e.g:

YEAR 年;YYYY 年;YY 年;QUARTER 季度;QQ 季度 ;Q 季度;MONTH 月(04);MM 月(04);M 月(04);WEEKDAY 星期几;DW 星期几;W 星期几;WEEK 一年的第几周;WK 一年的第几周;WW 一年的第几周;ISOWK 一年的第几周;ISOWW 一年的第几周;ISO_WEEK 一年的第几周;DAY 天;DD 天;D 天;DAYOFYEAR 一年的第几天;DY 一年的第几天;Y 一年的第几天;HOUR 小时;HH 小时;MINUTE 分钟;MI 分钟;N 分钟;SECOND 秒;SS 秒;S 秒;MCS 微秒(略);MICROSECOND 微秒(略);MILLISECOND 毫秒(略);MS 毫秒(略) ; NANOSECOND 十亿分之一秒(略);NS 十亿分之一秒(略);

DATEPART:参数参考DATENAME,不过返回值不一样,

DATENAME返回varchar,

DATEPART返回int

CONVERT 函数转换格式:主要注意第三个参数 date_style ;

格式:select CONVERT(varchar,GETDATE(),0)

最后的 date_style 可以有 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,100, 101,102,103,104,105,106,107,108,109,110,111,112,113,114,120,121,126,127,130,131等常用的 20,23,24,102,111,112,120等;示例:
4.1.数据类型转换函数CONVERT

一种数据类型转换成另一种数据类型,语法格式:

CONVERT(data_type(length),data_to_be_converted,style)

不过一般我们最常用的就是120,转换成类似yyyy-MM-dd HH:mm:ss

 //日期->字符串 DECLARE @Date_Birthday DATETIME = '2021-06-05 04:03:02.128' --select @Date_Birthday  --7.1.(120|20) yyyy-mm-dd hh:mi:ss(24h) console.log('2021-06-05 04:03:02') select CONVERT(varchar,@Date_Birthday,120)   --7.2.(121|21) yyyy-mm-dd hh:mi:ss.mmm(24h) console.log('2021-06-05 04:03:02.127') select CONVERT(varchar,@Date_Birthday,121)   --7.3.(102) yyyy.mm.dd console.log('2021.06.05') select CONVERT(varchar,@Date_Birthday,102)  --7.4.(111)yyyy/mm/dd console.log(''2021/06/05'') select CONVERT(varchar,@Date_Birthday,111)  --7.5.(112)yyyymmdd console.log('20210605') select CONVERT(varchar,@Date_Birthday,112)  //字符串转日期: select CONVERT(datetime,'2007-06-05 04:03:02.128',120) 
4.2.常用的转换附录:W3school

Style ID

Style 格式

100 或者 0

mon dd yyyy hh:miAM (或者 PM)

101

mm/dd/yy

102

yy.mm.dd

103

dd/mm/yy

104

dd.mm.yy

105

dd-mm-yy

106

dd mon yy

107

Mon dd, yy

108

hh:mm:ss

109 或者 9

mon dd yyyy hh:mi:ss:mmmAM(或者 PM)

110

mm-dd-yy

111

yy/mm/dd

112

yymmdd

113 或者 13

dd mon yyyy hh:mm:ss:mmm(24h)

114

hh:mi:ss:mmm(24h)

120 或者 20

yyyy-mm-dd hh:mi:ss(24h)

121 或者 21

yyyy-mm-dd hh:mi:ss.mmm(24h)

126

yyyy-mm-ddThh:mm:ss.mmm(没有空格)

130

dd mon yyyy hh:mi:ss:mmmAM

131

dd/mm/yy hh:mi:ss:mmmAM

标签: #sql判断时间在某个范围怎么写 #数据库时间区间 #数据库时间区间怎么看的