1. SQL中日期格式化函数
SQL中有多种日期格式化函数,其中最常用的是CONVERT和FORMAT函数。 CONVERT函数可以将日期/时间数据类型转化为字符数据类型,而FORMAT函数则可以将字符数据类型按照指定格式输出。
1.1 CONVERT函数
CONVERT函数可以将日期/时间数据类型转化为字符数据类型,其语法如下:
CONVERT(data_type(length),expression,style)
其中,data_type为要将expression转换为的数据类型,length为数据类型的长度。expression为要转换的日期/时间表达式,style为表示日期/时间的格式代码。style的取值范围很广,在SQL Server中共有21种style可供选择。下面列出其中比较常用的几种style:
mm/dd/yyyy:转换为月/日/年格式的字符数据类型,例如:03/01/2022。
dd/mm/yyyy:转换为日/月/年格式的字符数据类型,例如:01/03/2022。
yyyy-mm-dd:转换为年-月-日格式的字符数据类型,例如:2022-03-01。
mon dd yyyy hh:mi:ss:mmm:转换为短日期/时间格式的字符数据类型,例如:Mar 1 2022 12:00:00:000AM。
下面是一个例子,将日期格式转化为yyyy-mm-dd的字符型:
SELECT CONVERT(VARCHAR(10), GETDATE(), 120)
输出结果为:2022-03-01。其中,GETDATE()函数用于获取当前日期/时间。
1.2 FORMAT函数
FORMAT函数可以将字符数据类型按照指定格式输出,其语法如下:
FORMAT ( value, format [, culture ] )
其中,value为要格式化的值,format为表示输出格式的字符串,culture为要使用的地区/语言,可选项。一般情况下,culture使用默认值。
下面是几个例子:
SELECT FORMAT(GETDATE(),'yyyy-MM-dd')
SELECT FORMAT(GETDATE(),'dd-MM-yyyy')
SELECT FORMAT(GETDATE(),'HH:mm:ss')
SELECT FORMAT(GETDATE(),'h:mm:ss tt')
输出结果分别为:
2022-03-01
01-03-2022
22:44:48
10:44:48 PM
2. SQL中日期格式化示例
下面列举几个日期格式化的示例:
2.1 将日期类型转换为yyyy/mm/dd格式的字符数据类型
下面的代码将查询结果中hire_date列中的日期类型转换为yyyy/mm/dd格式的字符数据类型:
SELECT CONVERT(VARCHAR(10),hire_date,111) AS hire_date FROM employees
2.2 将日期类型转换为mon dd yyyy hh:mi:ss:mmm格式的字符型数据类型
下面的代码将查询结果中hire_date列中的日期类型转换为Mon dd yyyy hh:mi:ss:mmm格式的字符数据类型:
SELECT CONVERT(VARCHAR(30),hire_date,109) AS hire_date FROM employees
2.3 使用FORMAT函数将日期格式化为yyyy/mm/dd格式
下面的代码将查询结果中hire_date列中的日期类型格式化为yyyy/mm/dd:
SELECT FORMAT(hire_date,'yyyy/MM/dd') AS hire_date FROM employees
2.4 将字符数据类型转换为日期类型
下面的代码将查询结果中的字符数据类型birthdate列转换为日期类型:
SELECT CONVERT(DATE,birthdate) AS birthdate FROM employees
3. 其他常用日期格式化函数
除了CONVERT和FORMAT函数外,SQL Server还有其他常用的日期格式化函数,例如 YEAR、DATEPART、DATEADD、DATEDIFF 等。
3.1 YEAR函数
YEAR函数用于获取日期/时间表达式的年份,其语法如下:
YEAR(date)
其中,date为要获取年份的日期/时间表达式。下面是一个例子:
SELECT YEAR(GETDATE()) AS Year
输出结果为当前年份,例如:2022。
3.2 DATEPART函数
DATEPART函数用于获取日期/时间表达式中的指定部分,例如年、月、日、小时等,其语法如下:
DATEPART (datepart, date)[(arg)]
其中,datepart为要获取的日期/时间部分,例如:yy为年,mm为月,dd为日等;date为要获取日期/时间部分的表达式;arg为与datepart关联的整数表达式,例如获取第几周,则arg为2。
下面是一些例子:
SELECT DATEPART(yy, GETDATE()) AS Year
SELECT DATEPART(mm, GETDATE()) AS Month
SELECT DATEPART(day, GETDATE()) AS Day
SELECT DATEPART(weekday, GETDATE()) AS Weekday (1表示周日,2表示周一,以此类推)
3.3 DATEADD函数
DATEADD函数用于在日期/时间表达式中添加一个指定的时间间隔。其语法如下:
DATEADD (datepart, number, date)
其中,datepart为要添加的时间间隔,例如:yy为年,mm为月,dd为日等;number为要添加的数量,可以是正数也可以是负数;date为要添加时间间隔的日期/时间表达式。
下面是一些例子:
SELECT DATEADD(year, 1, GETDATE()) AS AddYear
SELECT DATEADD(month, 6, GETDATE()) AS AddMonth
SELECT DATEADD(day, -3, GETDATE()) AS SubDay
3.4 DATEDIFF函数
DATEDIFF函数用于计算两个日期/时间之间的间隔。其语法如下:
DATEDIFF (datepart, startdate, enddate)
其中,datepart为要计算的时间间隔,例如:yy为年,mm为月,dd为日等;startdate为间隔的起始日期/时间表达式,enddate为间隔的结束日期/时间表达式。
下面是一些例子:
SELECT DATEDIFF(year, '1998-01-01', '2022-03-01') AS DiffYear
SELECT DATEDIFF(month, '2022-03-01', '2022-04-01') AS DiffMonth
SELECT DATEDIFF(day, '2022-03-01', '2022-03-03') AS DiffDay
4. 总结
日期格式化在SQL中十分重要,可以让我们更方便地使用和理解日期相关的数据。本文介绍了SQL中常用的日期格式化函数CONVERT和FORMAT,以及其他常用的日期格式化函数YEAR、DATEPART、DATEADD、DATEDIFF等。希望这篇文章对你有所帮助。