台灣最大程式設計社群網站
線上人數
1555
 
會員總數:244807
討論主題:188842
歡迎您免費加入會員
討論區列表 >> MS SQL >> 有關日期時間的區域範圍
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
有關日期時間的區域範圍
價值 : 30 QP  點閱數:801 回應數:3

樓主

小魚兒
初學者
145 247
3765 284
發送站內信

捐贈 VP 給 小魚兒
語法:(CAST(EDate + ' ' + ETime AS DateTime) >= CAST('2016/06/08 15:43' AS DateTime))
請問一下
我在語法裡之前使用都正常可以使用(SQL 2000,2005)
但這1~2天有客戶反應後台資料已輸入了,但前台無資料顯示,查到結果我發現客戶資料是SQL Server 2014,
結果它出現了錯誤訊息:
訊息 242,層級 16,狀態 3,行 1
將 nvarchar 資料類型轉換成 datetime 資料類型時,產生超出範圍的值。


好像在SQL Server 2014不能這樣用,無法查詢活動日期的範圍值,結果我目前是將 DataTime 改成 Nvarchar(20),再去抓它的日期範圍,資料是有出來的
修改後語法:(CAST(EDate + ' ' + ETime AS nvarchar(20))>= CAST('2016/06/08 15:43' AS nvarchar(30)))

不知道這樣利用Nvarchar去取範圍值是否會有影響結果呢?
各欄位型態如下--
EDate - Nvarchar(10)
ETime - Nvarchar(10)


搜尋相關Tags的文章: [ Cast ] , [ Date ] , [ Time ] , [ nvarchar ] , [ datetime ] , [ nvarchar 資料類型轉換成 ] ,
本篇文章發表於2016-06-08 16:27
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

彩虹
檢舉此回應
將「CAST」改用「convert」
convert(datetime, '2016-10-23 20:44:11', 120)
註:第3個參數可自行調整,「120」格式代表為:yyyy-mm-dd hh:mm:ss

我覺得這ㄧ篇你可以參考一下
How to convert D.M.YYYY string to DATETIME?
http://stackoverflow.com/questions/28602412/how-to-convert-d-m-yyyy-string-to-datetimehttp://stackoverflow.com/questions/28602412/how-to-convert-d-m-yyyy-string-to-datetime

詳細參數
How to convert from string to datetime?
http://www.sqlusa.com/bestpractices/datetimeconversion/
本篇文章回覆於2016-06-08 17:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

pilipala
檢舉此回應
利用 ISDATE() 來檢查 EDate 和 ETime 合併後的字串日期,是否可以正常轉換為 datetime,檢查資料本身是不是有異常

EDate(EX:2016/06/08)和 ETime(15:43)的資料欄位,用不到 nvarchar,理論上兩欄位資料都是固定且用不到 unicode,用 char 比較節省空間
用案例探討資料庫設計的重要性
https://channel9.msdn.com/Series/SQL-PASS-TAIWAN/20150730
本篇文章回覆於2016-06-08 22:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

pilipala
檢舉此回應
SQL Server 2012 推出的轉換函數,也可以把字串日期轉為 datetime

轉換函數
https://msdn.microsoft.com/zh-tw/library/hh231076
本篇文章回覆於2016-06-09 08:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.