问题描述
SQL Server数据库中,如何将时间日期类型(DateTime)的数据转换成字符串类型(varchar,nvarchar),并对其进行yyyy-mm-dd
形式的格式化输出?
方案一
使用SQL Server的CONVERT()
函数,如下:
SELECT LEFT(CONVERT(VARCHAR, GETDATE(), 120), 10)
或者
SELECT CONVERT(VARCHAR(10), GETDATE(), 120)
关于CONVERT()
函数的不同类型,以下列出各种测试用例,供参考:
DECLARE @now datetime
SET @now = GETDATE()
select convert(nvarchar(MAX), @now, 0) as output, 0 as style
union select convert(nvarchar(MAX), @now, 1), 1
union select convert(nvarchar(MAX), @now, 2), 2
union select convert(nvarchar(MAX), @now, 3), 3
union select convert(nvarchar(MAX), @now, 4), 4
union select convert(nvarchar(MAX), @now, 5), 5
union select convert(nvarchar(MAX), @now, 6), 6
union select convert(nvarchar(MAX), @now, 7), 7
union select convert(nvarchar(MAX), @now, 8), 8
union select convert(nvarchar(MAX), @now, 9), 9
union select convert(nvarchar(MAX), @now, 10), 10
union select convert(nvarchar(MAX), @now, 11), 11
union select convert(nvarchar(MAX), @now, 12), 12
union select convert(nvarchar(MAX), @now, 13), 13
union select convert(nvarchar(MAX), @now, 14), 14
--15 to 19 not valid
union select convert(nvarchar(MAX), @now, 20), 20
union select convert(nvarchar(MAX), @now, 21), 21
union select convert(nvarchar(MAX), @now, 22), 22
union select convert(nvarchar(MAX), @now, 23), 23
union select convert(nvarchar(MAX), @now, 24), 24
union select convert(nvarchar(MAX), @now, 25), 25
--26 to 99 not valid
union select convert(nvarchar(MAX), @now, 100), 100
union select convert(nvarchar(MAX), @now, 101), 101
union select convert(nvarchar(MAX), @now, 102), 102
union select convert(nvarchar(MAX), @now, 103), 103
union select convert(nvarchar(MAX), @now, 104), 104
union select convert(nvarchar(MAX), @now, 105), 105
union select convert(nvarchar(MAX), @now, 106), 106
union select convert(nvarchar(MAX), @now, 107), 107
union select convert(nvarchar(MAX), @now, 108), 108
union select convert(nvarchar(MAX), @now, 109), 109
union select convert(nvarchar(MAX), @now, 110), 110
union select convert(nvarchar(MAX), @now, 111), 111
union select convert(nvarchar(MAX), @now, 112), 112
union select convert(nvarchar(MAX), @now, 113), 113
union select convert(nvarchar(MAX), @now, 114), 114
union select convert(nvarchar(MAX), @now, 120), 120
union select convert(nvarchar(MAX), @now, 121), 121
--122 to 125 not valid
union select convert(nvarchar(MAX), @now, 126), 126
union select convert(nvarchar(MAX), @now, 127), 127
--128, 129 not valid
union select convert(nvarchar(MAX), @now, 130), 130
union select convert(nvarchar(MAX), @now, 131), 131
--132 not valid
order BY style
输出结果(英文操作系统):
Jul 2 2019 4:35PM 0
07/02/19 1
19.07.02 2
02/07/19 3
02.07.19 4
02-07-19 5
02 Jul 19 6
Jul 02, 19 7
16:35:03 8
Jul 2 2019 4:35:03:167PM 9
07-02-19 10
19/07/02 11
190702 12
02 Jul 2019 16:35:03:167 13
16:35:03:167 14
2019-07-02 16:35:03 20
2019-07-02 16:35:03.167 21
07/02/19 4:35:03 PM 22
2019-07-02 23
16:35:03 24
2019-07-02 16:35:03.167 25
Jul 2 2019 4:35PM 100
07/02/2019 101
2019.07.02 102
02/07/2019 103
02.07.2019 104
02-07-2019 105
02 Jul 2019 106
Jul 02, 2019 107
16:35:03 108
Jul 2 2019 4:35:03:167PM 109
07-02-2019 110
2019/07/02 111
20190702 112
02 Jul 2019 16:35:03:167 113
16:35:03:167 114
2019-07-02 16:35:03 120
2019-07-02 16:35:03.167 121
2019-07-02T16:35:03.167 126
2019-07-02T16:35:03.167 127
29 شوال 1440 4:35:03:167PM 130
29/10/1440 4:35:03:167PM 131
方案二
在SQL Server 2012及以上版本中,新增了FORMAT()
函数,这时可以更方便地将时间日期格式化为指定格式的字符串,如下:
FORMAT(VALUE,'yyyy-mm-dd')
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册