代码之家  ›  专栏  ›  技术社区  ›  TroySteven

在SQL Server上将Varchar转换为Datetime

  •  -1
  • TroySteven  · 技术社区  · 7 年前
    SELECT SubmitDate, Type, Location, CONVERT(DATETIME, SubmitDate, 101) AS DDate
    FROM Employee
    WHERE (Type IN ('C', 'Q')) 
      AND (DDate > DATEADD(DDate, - 1, GETDATE()))
    

    我需要获取过去一年的所有记录, SubmitDate 是一个 varchar CONVERT datetime . 但是,我得到以下错误:

    DDate无法识别日期添加选项。

    我试着换了开关 转换 对以下内容进行了修改,但它不起作用:

    CONVERT(DATE, SubmitDate, 101)
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   PausePause    7 年前

    正如用户在上面所评论的,您不能在查询的WHERE子句中引用列别名。但是,您可以在WHERE子句中使用列转换。这不是很有效,但是如果您使用一次或两次查询(即:不在SSIS包或自动任务中),应该可以。

    SELECT SubmitDate, Type, Location,CONVERT(datetime, SubmitDate, 101) AS DDate
    FROM Employee
    WHERE ([Type] IN ('C', 'Q')) 
    AND (CONVERT(datetime, SubmitDate, 101) > DATEADD(Day, - 1, GETDATE()))
    

    查询的第二个问题是DATEADD子句。DATEADD需要三个参数:datepart、数字和日期。您有一个无效的datepart,或者“您正在对日期的哪一部分执行算术”。 DDate
    我编辑了查询,将datepart设置为“Day”,以便对子句进行求值(使用psedoocode) GETDATE()-1 Day ,但您可以将其设置为 GETDATE()-1 Month GETDATE()-1 DDate

    Refer to Microsoft documentation for more DATEADD information