2013-10-19 22 views
0

爲什麼不能在Windows 7中通過VB.Net工作該字符串?日期時間轉換字符串在Windows 7中失敗但不是在XP中都SQL Server 2008

update [table] 
set [newlycreatedemptycolumn] = CAST(ENTRYEXPIREDATE + TEMPTIME as datetime) 
  • entryexpiredatechar數據類型,即 「2013年10月18日」
  • temptimechar數據類型,即 「23:59:00」

它完美的我的Windows XP機器,但不是在Windows 7上。

我通過VB.Net傳遞此查詢字符串。我錯過了什麼?

strSQL = "update [table] set [dateTIMEcolumn] = CAST(ENTRYEXPIREDATE+TEMPTIME as datetime)" 

Using connection As New SqlConnection(conStr) 
    Dim command As New SqlCommand(strSQL, connection) 
    command.Connection.Open() 
    command.ExecuteNonQuery() 
    command.Connection.Close() 
End Using 

我收到此錯誤消息:

消息242,級別16,狀態3,行1
varchar數據類型到datetime數據類型的轉換導致的失範圍值。

+0

其中一個變量中的日期和時間之間是否有空格?你的意思是說SQL Server在WinXP上?或客戶端應用程序?這將有助於實際看到VB.NET代碼。它甚至是SQL Server或其他SQL RDBMS嗎? –

+0

@MattJohnson 這裏是vb.net代碼,就像我在開發Windows XP計算機時工作時所說的那樣。現在我在Windows 7中回家了,它不會像在工作時那樣創建列。 'STRSQL = 「更新GymAssistant設置entryexpiredateTIME = CAST(ENTRYEXPIREDATE + TEMPTIME作爲日期時間)」 使用連接作爲新的SqlConnection(構造) 昏暗命令作爲新的SqlCommand(STRSQL,連接) command.Connection.Open() 命令。 ExecuteNonQuery() command.Connection.Close() End Using' – gbb116

+0

「失敗」和「爲什麼它不起作用」是什麼意思?您沒有提供有關您遇到問題的信息。沒有「失敗」的定義,沒有解釋「不能工作」,並且你沒有提出可以回答的問題。 **希望我們在這裏幫助你的**問題是什麼? –

回答

1

您需要的日期和時間值之間添加空格:

CAST(ENTRYEXPIREDATE + ' ' + TEMPTIME 

否則,如果您的日期值是VARCHAR或填充完全定義的CHAR長度,SQL Server將看到:

CAST('2013-10-1823:59:00' as datetime) 

這不是有效的日期時間。

+0

仍然沒有工作,我是否需要修剪,因爲它在char(40)列。我還犯了一個錯誤,日期是在11/1/13的形式,如果這改變了什麼 – gbb116

+0

字符(40)列應該不重要,只要沒有其他東西在那裏。此外,日期格式應該不重要,除非您的系統使用非美國日期格式(儘管11/1/13通常應該沒問題)。你可以試着對數據庫服務器執行select CAST('11/1/13'+''+ '23:59:00'作爲日期時間)來看看會發生什麼。如果它起作用,那麼問題很可能是數據庫中的錯誤數據。 –

+1

感謝您幫助我上面的原始字符串結束了爲我工作。你所陳述的問題與我的數據有關。有一個日期是11/1/013。把所有東西搞砸了。在家裏,我正在測試數據庫,在工作中我正在實際備份數據庫。這裏我只是在考慮數據問題時的代碼。我向所有人表示歉意,謝謝你的幫助 – gbb116

相關問題