2009-09-02 56 views
0

我只是想知道是否有人知道如何選擇指定列將出現投射問題的行。從SQL服務器中選擇發生投射問題的行

即。

SELECT * FROM ThisTable噸

WHERE 0 <>(選擇鑄造(t.value如 日期時間))

'選擇流延(如t.value日期時間)' 將理想情況下返回@@ error 的結果以指示發生了投射問題。

有沒有人有任何想法,因爲我血腥難住。

乾杯

回答

2
SELECT * FROM ThisTable t 

WHERE ISDATE(t.value) = 1 -- or 0 for NOT a datetime valaue 

ISDATE是你的朋友,如果我理解正確的話......

+0

哈哈耶一個同事過來了20分鐘後,把它從他的竅門中拉出來......甚至不知道isdate是否存在!去顯示你每天學習新的東西;) 謝謝你的迴應:) – user155548 2009-09-03 00:25:22

1

我也一直在尋找一個解決方案在SQL服務器轉換爲varchar爲datetime時避免錯誤。

我有一個varchar列包含DD.MM.YYYY或MM.YYYY不一致條目的日期。通過簡單的強制轉換,查詢才能正常工作,直到遇到以前格式的記錄,這會導致轉換錯誤並中斷查詢。使用你的建議,我可以很容易地捕捉MM.YYYY值並將它們設置爲null,這正是我想要的。

SELECT CASE WHEN ISDATE(contract_date) = 1 
      THEN CAST(contract_date AS datetime) 
      ELSE NULL 
     END converted_dates 
FROM contracts 

「01.01.2009」成功轉換爲「01.01.2009 00:00:00」,而「01.2009」返回爲NULL。