我目前通过SSIS包将csv文件导入SQL,在tIS日期时间字段。但是日期时间字段结尾有格林威治标准时间(2013年8月11日15:47:53 GMT),所以我按照下面的说明删除它。
CAST(REPLACE(Date, ' GMT', '') AS DATETIME) AS yDate
这给我以下格式2013-11-08 15:47:53.000
- 应该是YYYY-MM-DD
然而我在将日期转换为YYYY-DD-MM格式时遇到了实际问题,因为SQL似乎认为它是2013年8月11日而不是2013年11月8日。我正在考虑与删除GMT的替换代码有关,但我尝试的所有内容都给出了相同的结果?
有没有人遇到类似的东西?
答案 0 :(得分:1)
不幸的是,使用空格分隔日期和时间时的行为取决于当前对数据库连接有效的DATEFORMAT
设置。
T
分隔符(2013-11-08T15:47:53.000
)应强制进行明确的解析:
CAST(REPLACE(REPLACE(Date, ' GMT', ''),' ','T') AS DATETIME) AS yDate
另一种选择是切换到使用CONVERT
并指定显式样式:
CONVERT(datetime,REPLACE(Date, ' GMT', ''),121) AS yDate