[英]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()))
我需要獲取過去一年的所有記錄, SubmitDate
是varchar
。 我使用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
不是日期部分,而是一列。 日期部分是諸如月,日,年,周等的值。
我編輯了查詢,將datepart設置為“ Day”,因此該子句將評估(使用pseduocode) GETDATE()-1 Day
,但是您可以將其設置為GETDATE()-1 Month
或hour。 但是, GETDATE()-1 DDate
的當前psedocode表達式對您的SQL Server客戶端沒有意義
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.