我正在尝试将平面文件中的一些数据导入SQL SERVER 2016.在平面文件中,有一个ISO 8061 UTC格式的日期数据
eg: 2017-10-08T00:00:00.0000000Z
在sql server中创建表时,我将列创建为datetime。但是现在当我尝试对这个特定列进行选择时,它会抛出错误:
Expected data type: DATETIME NOT NULL, Offending value: 2017-10-08T00:00:00.0000000Z (Column Conversion Error), Error: Conversion failed when converting the NVARCHAR value '2017-10-08T00:00:00.0000000Z' to data type DATETIME.
无论如何都要解决这个问题。我在SQL server中尝试了以下语句:
SELECT convert(datetime, DateColumnISO, 127) FROM myTable;
这又引发了同样的错误。
谢谢, 阿琼
答案 0 :(得分:2)
convert
到datetime
的精确度太高了。要么删除所有过去几毫秒,要么将convert
删除到datetime2
:
select convert(datetime, '2017-10-08T00:00:00.000Z' ,127) as ConvertedToDateTime
,convert(datetime2,'2017-10-08T00:00:00.0000000Z',127) as ConvertedToDateTime2
输出:
+-------------------------+------------------------------+
| ConvertedToDateTime | ConvertedToDateTime2 |
+-------------------------+------------------------------+
| 2017-10-08 00:00:00.000 | 2017-10-08 00:00:00.0000000 |
+-------------------------+------------------------------+