【问题标题】:String to DATETIME with TimeZone使用 TimeZone 到 DATETIME 的字符串
【发布时间】:2015-08-24 16:02:40
【问题描述】:

我有一个 SSIS 包,它从调查系统中提取一个平面文件。平面文件中的字段之一称为 start_date。它的格式为“04/29/2015 10:09:41 AM PDT”

正在执行...

SELECT Start_Date = CAST(Start_Date AS DATETIME)

结果...

Conversion failed when converting date and/or time from character string.

PDT 导致问题,因为当我手动删除它时,查询很好。我的问题是一些可扩展性问题。当然,我可以对其进行硬编码并删除 PDT。有没有一种简单的方法来删除它,而不是特定于字符串替换或 left(x) 或硬编码 PDT 删除?我没有看到它。非常感谢任何帮助。

【问题讨论】:

    标签: sql-server-2008 tsql csv ssis flat-file


    【解决方案1】:

    时区将始终跟随最后一个空格,无论它是什么。所以这是一个通用的方法,你可以把它砍掉。如果您愿意,您可以在此时设置时区查找。

    DECLARE @dtstr NVARCHAR(50) = '04/29/2015 10:09:41 AM PDT'
    DECLARE @tzpos INT = CHARINDEX(' ',REVERSE(@dtstr)) --find last space
    DECLARE @dt DATETIME2 = LEFT(@dtstr,LEN(@dtstr)-@tzpos) --truncate at last space
    
    SELECT @dt
    

    【讨论】:

      猜你喜欢
      • 2014-12-23
      • 1970-01-01
      • 2013-03-20
      • 2021-02-02
      • 2012-10-20
      • 2021-11-12
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多