Sql server 2008 转换和强制转换日期时间不起作用
我目前通过SSIS包将csv文件导入SQL,日期和时间为。但是datetime字段末尾有GMT(11/08/2013 15:47:53 GMT),因此我执行以下操作以删除它Sql server 2008 转换和强制转换日期时间不起作用,sql-server-2008,converter,Sql Server 2008,Converter,我目前通过SSIS包将csv文件导入SQL,日期和时间为。但是datetime字段末尾有GMT(11/08/2013 15:47:53 GMT),因此我执行以下操作以删除它 CAST(将(日期,'GMT','')替换为DATETIME)转换为yDate 这给了我以下格式2013-11-08 15:47:53.000-应该是YYYY-MM-DD 但是,我在将日期转换为YYYY-DD-MM格式时遇到了实际问题,因为SQL似乎认为日期是2013年8月11日,而不是2013年11月8日。我在想,这与删除
CAST(将(日期,'GMT','')替换为DATETIME)转换为yDate
这给了我以下格式2013-11-08 15:47:53.000
-应该是YYYY-MM-DD
但是,我在将日期转换为YYYY-DD-MM格式时遇到了实际问题,因为SQL似乎认为日期是2013年8月11日,而不是2013年11月8日。我在想,这与删除GMT的替换代码有关,但我尝试的所有操作都会得到相同的结果
有人遇到过类似的情况吗?不幸的是,使用空格分隔日期和时间时的行为取决于当前对数据库连接有效的特定设置
T
分隔符(2013-11-08T15:47:53.000
)应强制进行明确的解析:
CAST(REPLACE(REPLACE(Date, ' GMT', ''),' ','T') AS DATETIME) AS yDate
另一种选择是切换到使用并指定显式样式:
CONVERT(datetime,REPLACE(Date, ' GMT', ''),121) AS yDate
非常令人沮丧!但是我已经成功地使用了一个staging表并使用'set dateformat YMD'强制使用dateformat,这似乎已经奏效了!谢谢你的支持!