2017-10-16 17 views
-2

我有一個表(不是由我自己構建的)包含日期列(regDate - 例如18/10/2016)作爲文本和只有年和月份的列。 我的問題是運行查詢查看2016年8月和2017年10月之間的數據。 如何轉換此日期格式以查看結果?作爲文本存儲的日期之間的查詢

+0

請張貼一些代碼你以前 –

+0

提示嘗試:'CAST(regDate爲DATETIME)'和'DATEPART(MM, Cast(regDate as datetime))' –

回答

0

將您的日期時間轉換爲SQL Server。假設你有這種格式的日期18/10/2016

select CONVERT(date, '18/10/2016', 103) 

您可以將您的日期where條款再使用between查詢。

+0

查詢是在MM/YYYY字符串之間轉換的日期 –

0

我會用datefromparts()

where convert(date, regdate, 103) >= datefromparts(2016, 8, 1) and 
     convert(date, regdate, 103) < dateadd(month, 1, datefromparts(2017, 10, 1)) 

由於澄清了一句話:你有一個文本列,恰好代表日期。您沒有日期列。

我會強烈建議您在表中修復列類型:

update t 
    set regdate = convert(date, regdate, 103) ; -- this will format using the default date format 

alter t alter column regdate date; 
+0

'datefromparts'不是一個公認的內置函數名稱。 –

+0

您是對的我沒有日期欄,也無法修復或添加表 –

+0

@AndyL中的新日期欄。 。 。 。 'datefromparts()'自2012年以來一直是SQL Server的一部分:https://docs.microsoft.com/en-us/sql/t-sql/functions/datefromparts-transact-sql。 –

相關問題