通过T-SQL将SQL Server日期时间格式化为%Y-%m-%d%H:%M:%OS4%z格式?

时间:2016-03-17 00:27:23

标签: sql-server tsql datetime sql-server-2012

供应商要求我将SQL Server DateTime值转换为以下特定时间戳格式%Y-%m-%d %H:%M:%OS4 %z。查询将被放入他们的软件中以查询我的数据库。

所需的输出似乎与R中的posixct question模糊相关;但这是关于SQL Server的输出。我没有提供任何特定的错误,除了该字段在他们的软件中显示为空白,但它在我的SQL界面中工作。

我从SQL获得的输出如下:

2016-03-16 00:00:00.000

另一列的输出是这样的,它们varchar(30)2016-03-16 11:34:36没有问题,因为它只是将它视为字符串WHEN映射到字符串字段..但它要对待它需要它采用引用的%Y-%m-%d %H:%M:%OS4 %z格式。

除了数据类型之外,差异似乎很微妙,但即使映射到字符串字段,也无法将SQL本机输出映射到其字段之一。

我试过了例如

cast(convert(datetime, tn.last_settled, 126) as Varchar(30))
datetime上的

但会产生Jan 1 1990 12:00AM,而不是所需的格式。

如何从T-SQL中的SQL Server 2016-03-16 11:34:36格式将所需的字符串2016-03-16 00:00:00.000和日期时间%Y-%m-%d %H:%M:%OS4 %z格式转换为所需的datetime格式?

1 个答案:

答案 0 :(得分:3)

对于SQL Server 2012及更高版本,您应该能够将FORMAT与标准.NET格式字符串一起使用,以便为其提供所需的输出。例如:

FORMAT(tn.last_settled, 'yyyy-MM-dd HH-mm:ss.ffff')

要将字符串输入转换为日期时间,您应该可以使用PARSE

PARSE(@theStringValueTheySendYou as datetime)