格式化SQL Server日期会导致数据类型问题

时间:2016-07-01 23:21:49

标签: sql sql-server

当我尝试这个SQL查询时

select format(getdate(), 'yyyy-MM-dd HH:mm:ss.fff')

我得到了这个结果:

2016-07-01 23:19:16.573

但是当我尝试这个时,它会抛出一个错误:

select format('2016-06-28T23:44:23.7573244Z', 'yyyy-MM-dd HH:mm')

错误:

  

参数数据类型varchar对于格式函数的参数1无效。

为什么会这样?我认为两者几乎相似。

1 个答案:

答案 0 :(得分:3)

在致电DATETIME之前,您需要先将字符串转换为FORMAT对象:

FORMAT(CONVERT(DATETIME, '2016-06-28T23:44:23.757Z', 127), 'yyyy-MM-dd HH:mm')

如果您想使用原始输入,则可能需要STUFF远离毫秒精度的额外时间数据:

FORMAT(CONVERT(DATETIME,
               STUFF('2016-06-28T23:44:23.7573244Z', 24, 4, ''),
               127), 'yyyy-MM-dd HH:mm')