CRS*_*ser 1 t-sql sql-server datetime sql-server-2012
供应商要求我将 SQL ServerDateTime值转换为以下特定时间戳格式%Y-%m-%d %H:%M:%OS4 %z。该查询将被放入他们的软件中以查询我的数据库。
所需的输出似乎可能与R 中的posixct 问题模糊相关;但这是关于 SQL Server 中的输出。除了该字段在他们的软件中显示为空白之外,我没有收到任何具体错误,但它在我的 SQL 界面中有效。
我从 SQL 得到的输出如下:
2016-03-16 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
像这样的另一列的输出没有问题varchar(30),2016-03-16 11:34:36因为它只是在映射到字符串字段时将其视为字符串......但要使其处理它需要采用引用的%Y-%m-%d %H:%M:%OS4 %z格式。
除了数据类型之外,这些差异似乎很微妙,但即使映射到字符串字段,它也无法将 SQL 本机输出映射到其字段中。
我已经尝试过例如
cast(convert(datetime, tn.last_settled, 126) as Varchar(30))
Run Code Online (Sandbox Code Playgroud)
但datetime结果Jan 1 1990 12:00AM不是所需的格式。
如何将所需的字符串2016-03-16 11:34:36和日期时间格式从 T-SQL 中的 SQL Server格式2016-03-16 00:00:00.000转换为所需的格式?%Y-%m-%d %H:%M:%OS4 %zdatetime
对于 SQL Server 2012 及更高版本,您应该能够使用FORMAT标准 .NET 格式化字符串来为它们提供所需的输出。例如:
FORMAT(tn.last_settled, 'yyyy-MM-dd HH-mm:ss.ffff')
Run Code Online (Sandbox Code Playgroud)
要将字符串输入转换为日期时间,您应该能够使用PARSE:
PARSE(@theStringValueTheySendYou as datetime)
Run Code Online (Sandbox Code Playgroud)