我的表格中有一个日期时间字段,显示如下日期:
2017-01-18 10:20:19.617
我正在使用QUOTENAME输出包含在引号中的字段的表格,以便与导入基于CSV的旧应用程序兼容。
SELECT QUOTENAME(P.CreatedOn,'"') as CreatedOn
将输出更改为
"Jan 18 2017 10:20AM"
理想情况下我需要
"2017-01-18 10:20:19.617"
这可能吗?
答案 0 :(得分:3)
这应该可以解决问题。 CONVERT功能允许您明确控制日期转换的格式。
declare @d datetime = '20170119 20:21:22'
select QUOTENAME(CONVERT(varchar(23), @d, 121), '"')
一些指导说明:
yyyy-mm-dd HH:MM:ss[.ttt[tttt]][{+|-}offset]
格式化日期/时间。它总是包括3或7位的分数,具体取决于要转换的值的日期类型。varchar(...)
目标类型为短以保存完整字符串,则会从右侧截断。答案 1 :(得分:0)
QUOTENAME
返回nvarchar (258)
。当您向该函数提供DATE
时,它会转换为nvarchar
。
如果您先转换为varchar
或nvarchar
(如@CraigYoung建议),则此函数本身不会进行转换,也不会更改字符串。
在CONVERT
中,您可以使用列表可用格式指定日期所需的任何格式。