2017-01-23 110 views
0

我有一個表稱爲dbo.reminder在我有一個列名RDATE我已宣佈,由於如何用where語句比較日期?

NVARCHAR(50)

我要排序的表使用哪裏條件與當前日期我怎麼能做到這一點?

我已經嘗試此查詢

SELECT rdetail, 
     rid, 
     rdate = CONVERT(VARCHAR, CONVERT(DATETIME, rdate, 103), 103) 
FROM dbo.reminder 
where rdate='23/01/2017' 

,但它不是排序,請幫助我對此?

+1

日期是日期,而不是文字。永遠不要將日期存儲或視爲文本。當您需要指定日期文字時,請使用明確的格式,例如'20170123' –

+0

您可以分享rdate的樣本嗎? –

+0

換句話說,將日期存儲爲文本是一種非常嚴格的職業和客戶限制,合同罰款激活問題 –

回答

1

請勿將日期存儲爲NVARCHAR。您rate數據類型更改爲日期和嘗試這樣

SELECT rdetail,rid,rdate 
FROM dbo.reminder 
where rdate = convert(date,'23/01/2017' ,103) 

轉換的varchar日期輸入到date並與您rate列檢查。

,才能通過開關輸入的YYYYMMDDYYYY-MM-DD格式是通用的,不需要任何轉換

如果你不能改變的數據類型,然後

SELECT rdetail,rid,rdate 
FROM dbo.reminder 
where convert(date,rdate,103) = convert(date,'23/01/2017' ,103) 
+0

getdate()函數也可用於當前而不是手動編寫日期。 –

+0

感謝,但它顯示像這樣「轉換日期和/或時間從字符串轉換失敗」 – Suhas

+0

@SUASH-檢查更新 –