首页 / SQL Server / 正文

[SQL Server]SQL Server数据库中如何将时间日期类型(DateTime)转换成字符串类型(varchar,nvarchar)?

7321 1 发布于: 2019-07-02 读完约需12分钟

问题描述

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')

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [SQL Server]SQL Server数据库中如何修改数据列的数据类型?

下一篇: C#/.NET应用程序编程开发中如何使用LINQ实现按集合元素的某个属性分组(GroupBy)后查询分组的子集合?

本文永久链接码友网 » [SQL Server]SQL Server数据库中如何将时间日期类型(DateTime)转换成字符串类型(varchar,nvarchar)?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册