後,我在其中有兩列日期狀態提交日期7
Create table Status
(
date nvarchar(20),
Status bit
)
現在我要選擇其狀態=虛假和日期記錄後的7日內提交,就像如果我今天有插入表格兩個記錄有錯誤的狀態,所以我希望查詢在8-04-2015的7天后顯示記錄,1-04-2015的所有記錄都應該顯示狀態爲false。
如果您瞭解我的問題,請告訴做什麼。
後,我在其中有兩列日期狀態提交日期7
Create table Status
(
date nvarchar(20),
Status bit
)
現在我要選擇其狀態=虛假和日期記錄後的7日內提交,就像如果我今天有插入表格兩個記錄有錯誤的狀態,所以我希望查詢在8-04-2015的7天后顯示記錄,1-04-2015的所有記錄都應該顯示狀態爲false。
如果您瞭解我的問題,請告訴做什麼。
正如@gvee在上面的評論中所述,您應該將日期存儲爲DATE
或DATETIME
字段。這將允許您查詢,像這樣:
SELECT [date], [status]
FROM <yourtable>
WHERE [date] <= DATEADD(d, -7, GETDATE())
AND [status] = 0
這會給你一個虛假的身份是7天或更舊的任何結果。
或者,您WHERE
條款看起來是這樣的:
WHERE DATEDIFF(d, [date], GETDATE()) >= 7
AND [status] = 0
如果絕對必須讓你列NVARCHAR
數據類型,根據您提供的日期格式,你可以把它CONVERT
到DATETIME
像所以:
CONVERT(DATETIME, [date], 105)
所以你WHERE
條款是這樣的:
WHERE DATEDIFF(d, CONVERT(DATETIME, [date], 105), GETDATE()) >= 7
AND [status] = 0
如何投射?我的日期是這樣的1-04-2015 – 2015-04-01 16:39:53
'CONVERT(DATETIME,[date],105)'我會加到答案 – 2015-04-01 16:41:10
謝謝先生...... – 2015-04-01 16:44:41
這麼多,因爲它取決於你,你應該使用正確的數據類型,如DATE
或DATETIME
存儲數據。
您可以使用DATEDIFF()
找到天/周/小時
SELECT *
FROM YourTable
WHERE [status] = 0
AND DATEDIFF(day,YourDate,GETDATE()) >=7
兩個日期之間的差值,等:如果你絕對不能修復的數據結構,你必須添加CAST()
或CONVERT()
周圍的字符串日期的每個用法:
CAST(YourDate AS DATETIME)
你** **需要將日期存儲爲日期,而不是作爲字符串。 – gvee 2015-04-01 16:19:34
[不良習慣踢:選擇錯誤的數據類型](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using-the-wrong-data- type.aspx) - 你應該總是使用最合適的數據類型 - 畢竟這就是他們所在的地方! – 2015-04-01 16:36:08