SQL时间格式化输出
在SQL中,时间是一种十分重要的数据类型。当我们需要将时间以一定的格式输出时,就需要对时间进行格式化。SQL Server提供了一些实用的函数来对时间进行格式化输出。下面介绍两种方法来实现时间格式化输出。
方法一:使用CONVERT函数
SQL Server中可以使用CONVERT函数来将时间以指定的格式输出。这个函数接收三个参数:要转换的数据类型、要转换的表达式以及要转换为的新类型。下面是一个使用CONVERT函数将当前时间以YYYY-MM-DD格式输出的例子:
SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS '当前时间'
其中,VARCHAR(10)表示要转换成的数据类型为VARCHAR,长度为10;GETDATE()函数获取当前时间;120表示要将时间转换为的新类型,即YYYY-MM-DD格式。运行以上代码,将会输出当前时间的日期部分:
当前时间
----------
2022-02-24
需要注意的是,CONVERT函数还可以将时间转换成其他的格式,如下表所示:
代码 | 结果 |
---|---|
101 | MM/DD/YYYY |
102 | YYYY.MM.DD |
103 | DD/MM/YYYY |
104 | DD.MM.YYYY |
105 | DD-MM-YYYY |
106 | DD MMM YYYY |
107 | MMM DD,YYYY |
108 | HH:MI:SS |
109 | MM-DD-YYYY HH:MI:SS |
110 | YYYY-MM-DD |
111 | YYYY/MM/DD |
112 | YYYYMMDD |
120 | YYYY-MM-DD HH:MI:SS |
121 | YYYY-MM-DD HH:MI:SS.MS |
方法二:使用FORMAT函数
SQL Server 2012及以上版本提供了一个名为FORMAT的新函数,它可以更加简单地实现时间格式化。下面是一个在FORMAT函数中使用标准日期和时间格式字符串的例子,以YYYY-MM-DD格式输出当前日期:
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd') AS '当前日期'
运行以上代码,将会输出当前日期:
当前日期
----------
2022-02-24
需要注意的是,FORMAT函数的第一个参数是要格式化的时间,第二个参数是用来描述时间格式的字符串。下面是一些常见的日期和时间格式字符串:
标准格式字符串 | 示例 | 说明 |
---|---|---|
d | 5 | 月中的第几天,不足两位时前面补0 |
dd | 05 | 月中的第几天,不足两位时前面补0 |
ddd | Sun | 星期几的缩写 |
dddd | Sunday | 星期几的全称 |
M | 9 | 月份,不足两位时不补0 |
MM | 09 | 月份,不足两位时前面补0 |
MMM | Sep | 月份的缩写 |
MMMM | September | 月份的全称 |
y | 2019 | 年份的最后一位,不足两位时不补0 |
yy | 19 | 年份的最后两位,不足两位时前面补0 |
yyy | 2019 | 年份,不足四位时前面补0 |
yyyy | 2019 | 年份,不足四位时前面补0 |
h | 3 | 12小时格式的小时,不足两位时不补0 |
hh | 03 | 12小时格式的小时,不足两位时前面补0 |
H | 15 | 24小时格式的小时,不足两位时不补0 |
HH | 15 | 24小时格式的小时,不足两位时前面补0 |
m | 9 | 分钟,不足两位时不补0 |
mm | 09 | 分钟,不足两位时前面补0 |
s | 8 | 秒数,不足两位时不补0 |
ss | 08 | 秒数,不足两位时前面补0 |
CONVERT函数应用示例
示例一:转换字符型日期为日期型
假设数据库中有一个日期字段为字符型,存储的日期格式为YYYY-MM-DD,现需要将这个字段转换为日期型。可以使用CONVERT函数实现:
SELECT CONVERT(DATE, '2022-02-24', 120) AS '日期'
其中,DATE表示要转换成的数据类型为DATE,'2022-02-24'是要转换的表达式,120表示要将时间转换为的新类型,即YYYY-MM-DD格式。运行以上代码,将会输出日期:
日期
----------
2022-02-24
示例二:将日期型转换为字符型
假设有一个日期型字段BirthDay,现需要将其转换为字符型,并以YYYY/MM/DD格式输出。可以使用CONVERT函数实现:
SELECT CONVERT(VARCHAR(10), BirthDay, 111) AS '日期'
FROM Employee
其中,VARCHAR(10)表示要转换成的数据类型为VARCHAR,长度为10;BirthDay是要转换的表达式;111表示要将时间转换为的新类型,即YYYY/MM/DD格式。运行以上代码,将会输出Employee表中的所有员工的生日:
日期
----------
1985/01/01
1992/03/10
1990/11/15
1987/07/25
1991/06/08
1993/02/14
示例三:将日期型转换为时间型
假设数据库中有一个日期型字段StartTime,存储的时间格式为HH:MI:SS,现需要将这个字段转换为时间型。可以使用CONVERT函数实现:
SELECT CONVERT(TIME, StartTime) AS '时间'
FROM WorkTime
其中,TIME表示要转换成的数据类型为TIME,StartTime是要转换的表达式。假如WorkTime表中StartTime字段的值分别为08:30:00和13:00:00,那么运行以上代码,将会输出:
时间
----------
08:30:00
13:00:00
总结
本文介绍了SQL Server中实现时间格式化输出的两种方法:使用CONVERT函数和使用FORMAT函数。在实际开发中,我们可以根据需要选择适合自己的方法进行时间格式化输出。