2014-04-01 67 views
0

我想知道是否有人可以幫助我。SQL Server - 將char數據類型轉換爲smalldatetime

我創建了一個小的SQL查詢,但我每次運行它的時候,我收到以下錯誤

char數據類型爲smalldatetime數據類型的轉換導致超出範圍的smalldatetype值。

我試圖運行的SQL如下:

UPDATE sales 
SET dateOut = '2014-04-31 12:32:46' 
WHERE userID = '11111' AND dateOut >= '2014-04-01 12:32:46' 

任何幫助將不勝感激。

乾杯,

回答

2

我不知道爲什麼你會得到這個錯誤。進行轉換的一種更安全的方式(因爲它不會在系統日期/時間格式首選項上進行中繼)是使用convert()。所以,你可以嘗試:

UPDATE sales 
    SET dateOut = convert(smalldatetime, '2014-04-31 12:32:46', 120) 
    WHERE userID='11111' AND 
      dateOut >= convert(smalldatetime, '2014-04-01 12:32:46', 120); 

編輯:

DUH!四月只有30天。嘗試做

UPDATE sales 
    SET dateOut = convert(smalldatetime, '2014-04-30 12:32:46', 120) 
    WHERE userID='11111' AND 
      dateOut >= convert(smalldatetime, '2014-04-01 12:32:46', 120); 

其實,這種敏銳的觀察力,你原來會用正確的日期工作:

UPDATE sales 
    SET dateOut ='2014-04-30 12:32:46' 
    WHERE userID='11111' AND dateOut >= '2014-04-01 12:32:46'; 
+0

感謝您的回答,但即時通訊仍然看到錯誤 – BigJobbies

+0

@BigJobbies。 。 。 'dateOut'的數據類型是什麼? –

+0

在設計中,它說smalldatetime – BigJobbies

0

我有完全相同的問題,並且不可能弄明白。原來,SQL服務器與我運行代碼的機器位於不同的時區。我用於DateTime對象的擴展方法使用英國日期格式,即使SQL Server管理工作室顯示相同的日期格式,底層系統也不使用此格式。

我能夠使用以下工作。

System.DateTime currentdate = System.DateTime.Now; 
string currentDateString = currentdate.Month + "/" + currentdate.Day + "/" + currentdate.Year; 
相關問題