SqlServer中日期函数的汇总

SqlServer中日期函数的汇总

1. sql中的日期格式化

  1. FORMAT 日期格式化

format 这个函数中需要两个参数,第一个是日期,第二个格式,例如日期 yyyy-MM-dd 只能按照时间类型去转换,毫秒数无法转换
这里的 M 表示的是月份,MM 月份前面会补零,m 表示的是分钟,mm 分钟前面会补零
mM 无论位置都是表示的是月份和分钟数

-- 这里的格式化表达式可以是 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)

  1. date_type 第一个参数表示的是转换后的类型,可以定义长度
  2. data_to_be_converted 第二个参数是需要转换的类型本身,例如当前日期 getdate 或者
  3. 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 IDStyle 格式
100 或者 0mon dd yyyy hh:miAM (或者 PM)
101mm/dd/yy
102yy.mm.dd
103dd/mm/yy
104dd.mm.yy
105dd-mm-yy
106dd mon yy
107Mon dd, yy
108hh:mm:ss
109 或者 9mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110mm-dd-yy
111yy/mm/dd
112yymmdd
113 或者 13dd mon yyyy hh:mm:ss:mmm(24h)
114hh:mi:ss:mmm(24h)
120 或者 20yyyy-mm-dd hh:mi:ss(24h)
121 或者 21yyyy-mm-dd hh:mi:ss.mmm(24h)
126yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130dd mon yyyy hh:mi:ss:mmmAM
131dd/mm/yy hh:mi:ss:mmmAM
  1. CAST 字符串转换成日期

cast ( expression AS data_type) 将一种数据类型的表达式转换为另一种数据类型的表达式。
使用的时候有两个参数

  1. expression:任何可转换为 data_type 的有效表达式;
  2. 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 时间的增加和减少

dateadd 这个函数有三个参数
参数1:类型,如 day month qq year
参数2:数据,增加或者减少的数据
参数3:日期,可以是getdate,也可以是字符串


-- 当前日期
select getdate()
-- 2021-04-21 16:18:28
select dateadd(day,3,getdate())
-- 2021-04-24 16:20:35
select dateadd(day,3,'2021-04-21 16:18:28')
-- 2021-04-24 16:20:35
select dateadd(day,-3,getdate())
-- 2021-04-18 16:20:53
select dateadd(year,1,getdate())
-- 2022-04-21 16:21:34
select dateadd(month,1,getdate())
-- 2021-05-21 16:22:02
select dateadd(qq,1,getdate())
-- 2021-07-21 16:22:59
select dateadd(week,1,getdate())
-- 2021-04-28 16:23:42

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

datediff 这个函数有三个参数
参数1:类型,如 day month qq year
参数2:数据,增加或者减少的数据
参数3:日期,可以是getdate,也可以是字符串


-- 当前日期
select getdate()
-- 2021-04-21 16:27:05
select datediff(day,'2020-03-20 16:27:05',getdate())
-- 397
select datediff(month,'2020-03-20 16:27:05',getdate())
-- 13
select datediff(year,'2020-03-20 16:27:05',getdate())
-- 1
select datediff(qq,'2020-03-20 16:27:05',getdate())
-- 5
select datediff(week,'2020-03-20 16:27:05',getdate())
-- 57

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值