SQLServe日期相关

目录

1.日期函数

1.1获取当前时间

1.2日期加减函数DATEADD

1.3日期差值DATEDIFF

1.4年月最后一天EOMONTH

1.5返回日期指定部分作为字符串DATENAME

 1.6返回日期指定部分作为整形DATEPART

1.7判断是否为日期

1.7.1ISDATE

1.7.8TRY_CAST

2.特殊日期获取

2.1上月月初

2.2上月月底

2.3本月月初

2.4本月月底 

2.5下月月初

2.6下月月底

3.日期格式转换

3.1FORMAT函数

 3.2CONVERT函数

4.日期和时间数据类型


1.日期函数

1.1获取当前时间

可以使用GETDATE()或CURRENT_TIMESTAMP获取系统当前时间

实例: 

SELECT CURRENT_TIMESTAMP as CUR_TM,GETDATE() as DT

结果: 

2024-08-05 08:03:13,2024-08-05 08:03:13

1.2日期加减函数DATEADD

DATEADD() 函数在日期中添加或减去指定的时间间隔。

语法:DATEADD(datepart,number,date)

其中参数的解释如下:

  • datepart: 需要添加的日期部分,如年(YEAR)、季度(QUARTER)、月(MONTH)、周(WEEK)、天(DAY)、小时(HOUR)、分钟(MINUTE)、秒(SECOND)等。
  • interval: 需要添加的时间间隔,可以为正数或负数。
  • datetime: 要进行加、减操作的日期。

datepart参数可以是下列缩写:

年                      yy, yyyy
季度                  qq, q
月                      mm, m
年中的日           dy, y
日                      dd, d
周                      wk, ww
星期                  dw, w
小时                  hh
分钟                  mi, n
秒                      ss, s
毫秒                  ms
微妙                  mcs
纳秒                  ns

 实例:

1.年份加1

实例:

SELECT DATEADD(YEAR,1,'2024-02-03 03:09:18') as NEXT_YEAR

结果: 

2025-02-03 03:09:18

2.月份减1

实例: 

SELECT DATEADD(MONTH,-1,'2024-02-03 03:09:18') AS LAST_MONTH

结果: 

2024-01-03 03:09:18

1.3日期差值DATEDIFF

DATEDIFF() 用于计算两个日期之间的时间间隔。它接受三个参数:时间间隔单位、开始日期和结束日期,并返回两个日期之间的单位时间间隔。(请注意,第二个日期比第一个日期早,结果将是一个负数)

语法:DATEDIFF(interval, start_date, end_date)

 实例:

SELECT DATEDIFF(DAY,'2024-06-05','2024-08-05') AS DiffDate

结果: 

 61

1.4年月最后一天EOMONTH

实例: 

SELECT EOMONTH('2023-04-19') AS LastDayOfMonth;

结果: 

2023-04-30 

1.5返回日期指定部分作为字符串DATENAME

用于返回日期/时间值的指定部分(如年、月、日)作为字符串

语法:DATENAME ( datepart , date )

其中:

  • datepart 是你想要返回的日期/时间部分。例如,yearmonthday 等。
  • date 是你想要从中提取日期部分的日期/时间值。

 实例:

SELECT DATENAME(YEAR,'2024-09-01') as YEAR_STR

结果:返回字符类型 

2024 

 1.6返回日期指定部分作为整形DATEPART

 用于返回日期/时间值的指定部分(如年、月、日)作为整形

语法:DATEPART ( datepart , date )

实例: 

SELECT DATEPART(YEAR,'2024-09-01') as YEAR_INT

结果:返回整数类型 

2024 

1.7判断是否为日期

1.7.1ISDATE

用于返回 1或0指明某表达式是否可以转换为日期。 

语法:ISDATE(expression)

expression 参数可以是任意可被识别为日期和时间的日期表达式或字符串表达式。

实例:

SELECT ISDATE('2024-01-41'),ISDATE('2024-02-29') 

结果: 

0,1

1.7.8TRY_CAST

TRY_CAST 是一个SQL Server中的函数,‌用于尝试将一个值转换为指定的数据类型。‌如果转换成功,‌TRY_CAST会返回转换后的值;‌如果转换失败,‌则会返回NULL。‌这个函数在SQL Server 2012及更高版本中引入 

语法:TRY_CAST ( expression AS data_type [ ( length ) ] )

  • expression:‌要转换的值。‌
  • data_type:‌要将expression转换到的数据类型。‌
  • length:‌指定目标数据类型的长度的可选整数。‌

实例:

SELECT TRY_CAST('2024-01-41' as DATE),TRY_CAST('2024-02-29' as DATE) 

结果: 

 NULL,2024-02-29

2.特殊日期获取

2.1上月月初

实例: 

SELECT DATEADD(dd,-DAY(dateadd(MONTH,-1,GETDATE()))+1,dateadd(MONTH,-1,GETDATE()))

结果: 

2024-07-01 08:03:13

2.2上月月底

实例: 

SELECT DATEADD(dd,-DAY(GETDATE()),GETDATE())

结果: 

2024-07-31 08:03:13

2.3本月月初

实例: 

SELECT DATEADD(MONTH,datediff(MONTH,0,GETDATE()),0)

结果: 

2024-08-01 08:03:13

2.4本月月底 

实例: 

SELECT  DATEADD(dd,-DAY(dateadd(MONTH,1,GETDATE())),dateadd(MONTH,1,GETDATE())) 

结果: 

2024-08-31 08:03:13

2.5下月月初

实例: 

SELECT DATEADD(dd,-DAY(dateadd(MONTH,1,GETDATE()))+1,dateadd(MONTH,1,GETDATE()))

结果: 

2024-09-01 08:03:13

2.6下月月底

实例: 

SELECT DATEADD(dd,-DAY(dateadd(MONTH,2,GETDATE())),dateadd(MONTH,2,GETDATE())) 

结果: 

2024-09-30 08:03:13

3.日期格式转换

3.1FORMAT函数

日期函数FORMAT()可以用来格式化日期。

语法:FORMAT ( value, format [, culture ] )

  • value: 要格式化的日期或时间值。
  • format: 指定日期或时间的输出格式的字符串。
  • culture: (可选)指定地区性规则的字符串。

 实例:

SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss') AS F_DT;

结果: 

2024-08-05 08:03:13

 3.2CONVERT函数

CONVERT() 函数是把日期转换为新数据类型的通用函数,CONVERT() 函数可以用不同的格式显示日期/时间数据。此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)

相互转换的时候才用到.

语法:CONVERT(data_type[(length)],expression[,style])

data_type[(length)] 表示要转换成的数据类型及其长度,expression 是要转换的表达式,style 是转换的样式代码。

实例:

SELECT CONVERT(nvarchar(50),GETDATE() ,112)

结果: 

20240805

其中112表示时间格式为yyyymmdd

 常见时间格式有

101:mm/dd/yyyy
110:mm-dd-yyyy
111:yyyy/mm/dd/
112:yyyymmdd
120:yyyy-mm:dd hh:mm:ss
121:yyyy-mm:dd hh:mm:sssssss

4.日期和时间数据类型

SQLServe中常见的时间类型有

日期类型格式范围
DATEYYYY-MM-DD0001-01-01 到 9999-12-31
TIMEhh:mm:ss[.nnnnnnn]

00:00:00.0000000 

到23:59:59.9999999

DATETIMEYYYY-MM-DD hh:mm:ss[.nnn]1753-01-01 到 9999-12-31
DATETIME2YYYY-MM-DD hh:mm:ss[.nnnnnnn]

0001-01-01 00:00:00.0000000

 到9999-12-31 23:59:59.9999999

SMALLDATETIMEYYYY-MM-DD hh:mm1900-01-01 到 2079-06-06

可以使用CONVERT函数进行时间类型转换

实例:

SELECT CONVERT(TIME,'2024-08-01 05:30:13') as TM,CONVERT(DATE,'2024-08-01 05:30:13') as DT,CONVERT(DATETIME,'2024-08-01 05:30:13') as DTM

 结果:

05:30:13,2024-08-01,2024-08-01 05:30:13

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值