簡體   English   中英

在SQL Server上將Varchar轉換為Datetime

[英]Converting Varchar to Datetime on SQL Server

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

我需要獲取過去一年的所有記錄, SubmitDatevarchar 我使用CONVERT將列轉換為datetime 但是我收到以下錯誤:

DDate無法識別的dateadd選項。

我嘗試將CONVERT切換為以下內容,但沒有成功:

CONVERT(DATE, SubmitDate, 101)

正如用戶在上面評論的那樣,您不能在查詢的WHERE子句中引用列別名。 但是,您可以在WHERE子句中使用列轉換。 它的效率不是很高,但是如果您使用查詢一次或兩次(IE:不在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,數字和日期。 您的日期部分無效,或“您要對日期的哪一部分執行算術”。 DDate不是日期部分,而是一列。 日期部分是諸如月,日,年,周等的值。
我編輯了查詢,將da​​tepart設置為“ Day”,因此該子句將評估(使用pseduocode) GETDATE()-1 Day ,但是您可以將其設置為GETDATE()-1 Month或hour。 但是, GETDATE()-1 DDate的當前psedocode表達式對您的SQL Server客戶端沒有意義

有關更多DATEADD信息,請參閱Microsoft文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM