SqlServer中日期函数的汇总

SqlServer中日期函数的汇总

1. sql中的日期格式化

  1. FORMAT 日期格式化
format 这个函数中需要两个参数,第一个是日期,第二个格式,例如日期 yyyy-MM-dd 只能按照时间类型去转换,毫秒数无法转换 这里的 M 表示的是月份,MM 月份前面会补零,m 表示的是分钟,mm 分钟前面会补零 m 和 M 无论位置都是表示的是月份和分钟数
-- 这里的格式化表达式可以是 yyyy-MM-dd HH:mm:ss
select FORMAT(GETDATE(),yyyy-MM-dd)
--输出结果:2021-04-21
select FORMAT(GETDATE(),yyyy-MM-dd HH:mm:ss)
--输出结果:2021-04-21 14:37:08
select format(getdate(),M-d)
-- 输出结果:4-21
  1. CONVERT 日期格转换成字符串和格式化
convert 函数有三个参数 conver(data_type(length),data_to_be_converted,style) date_type 第一个参数表示的是转换后的类型,可以定义长度 data_to_be_converted 第二个参数是需要转换的类型本身,例如当前日期 getdate 或者 style 第三个参数是按照什么样的格式转换
-- 120 是sqlserver中内置的参数,他代表的格式是:yyyy-MM-dd HH:mm:ss
select convert(varchar(100),getDate(),120)
-- 输出结果:2021-04-21 14:55:20
select convert(varchar(10),getDate(),23)
-- 输出结果:2021-04-21
select convert(varchar(100),getDate(),121)
-- 输出结果:2021-04-21 14:58:33.060
select CONVERT(VARCHAR(10),GETDATE(),24)
-- 输出结果:14:59:38

常用的日期格式如下:

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
  1. CAST 字符串转换成日期
cast ( expression AS data_type) 将一种数据类型的表达式转换为另一种数据类型的表达式。 使用的时候有两个参数 expression:任何可转换为 data_type 的有效表达式; data_type 数据库中的所有支持的数据类型
select cast(2021-04-21 as datetime)
-- 输出结果: 2021-04-21 00:00:00
select cast(getdate() as date)
-- 输出结果: 2021-04-21

2. dateadd 时间的增加和减少

3. datediff 两个时间之间的差 返回跨两个指定日期的日期和时间边界数。

4. datename 获取指定日期的指定部分的字符串

datename 的作用是获取指定日期的详细数据,比如获取日期,月份,年份,周几
-- 当前日期
select getdate()
-- 2021-04-21 16:27:05
select datename(day,getdate())
-- 21
select datename(dayofyear,getdate()) -- 获取一年中的第几天
-- 111
select datename(month,getdate())
-- 04
select datename(year,getdate())
-- 2021
select datename(weekday,getdate())
-- 星期三
select datename(week,getdate()) -- 获取一年中的第几周
-- 17

5. datepart 获取星期的数字

SELECT DATEPART(weekday,20210209) --返回值为2

SELECT DateName(weekday,20210209) --返回值为星期二

6. eomonth 获取月份的最后一天

eomonth 给定一个日期,然后对日期的月份进行计算后获取计算后月份的最后一天
-- 当前日期
select getdate()
-- 2021-04-21 17:41:44
select eomonth(getdate(),1)
-- 2021-05-31
select eomonth(getdate(),-1)
-- 2021-03-31
经验分享 程序员 微信小程序 职场和发展