最近在 SQL Server 上写存储过程,发现在 MySQL 上能使用的一些日期函数无法使用,在此简要介绍一下 SQL Server 中一些日期函数的使用。
SQL Server 版本是 Microsoft SQL Server 2008 (RTM) .
一、常用函数
1.1 返回日期和时间的函数
- getdate(): 返回当前时间,类似于 MySQL 中的 now() 与 current_timestamp() 函数,区别是时间部分不是精确到秒,而是精确到毫秒。
select getdate() -- 返回 2020-03-14 11:45:13.180
- datepart(datepart, date): 将日期部分以整数返回。第一个参数 datepart 是需要返回日期部分的类型, date 是字符串类型的日期(可以是时间)。
下表是常用的datepart的取值,适用于其他日期函数:datepart 说明 year 年 month 月 day 日 week 周 weekday 星期 hour 时 minute 分 second 秒 - datename(datepart, date): 区别与 datepart 的是它是将日期部分以字符串返回。datepart 设为 w 时,返回的是“星期 x ”的字样。
- day(date): 返回给定日期(可以是时间)的月份中的第几天,是整数;
- month(date): 返回给定日期(可以是时间)的月份,是整数;
- year(date): 返回给定日期(可以是时间)的年份,是整数;
1.2 返回两个日期之间的差值
- datediff(datepart, startdate, enddate): 返回两个日期之间日期的差值(可以是时间),是整数值。当整数值超过-2,147,483,648到+2,147,483,647这个范围时使用 datediff_big() 函数。
1.3 修改时间函数
- dateadd(datepart, number, date): 将 number 添加到日期(可以是时间)部分并返回新的时间值。SQL Server没有 datesub函数,当需要返回指定时间之前的时间时,number设置为负的就好啦。
- eomonth(date, offset_number): 返回包含指定日期(可以是时间)的月份的最后一天(日期形式),并带有可选的偏移量 offset_number ,偏移单位是1个月。
select eomonth('2020-03-17 20:12:11', -1) -- 返回 2020-02-29
二、常见日期函数使用场景
未完待续……
参考:
[1] 易百教程;