[SQL server]“從字串轉換為 datetime 時發生語法錯誤”的解決方案

來源:互聯網
上載者:User
 今天發現出現
Microsoft OLE DB Provider for SQL Server (0x80040E07)
從字串轉換為 datetime 時發生語法錯誤。
的錯誤。檢查程式,發現程式裡面擷取目前時間使用的是now(),用response.write輸出,發現字串裡有"上午"或"下午"出現,而SQL Server 的資料庫的datetime(8)類型不接受"上午""下午",也不能自動轉換,於是出錯(另外試了一下,在ACCESS資料庫裡是不會出現這種情況的)。
  比如:insert into test (Time) values ('2010-04-03 下午 3:50:12') 在ACCESS裡會自動轉換成24小時制,得到數值為:"2010-04-03 15:50:12"。但是在SQL Server裡會出錯,提示"從字串轉換為 datetime 時發生語法錯誤。"那這應該就是時間格式設定問題了,上網查了一下,通過以下方法解決問題。

一、windows XP的解決方案(修改註冊表,我已經測試成功)

1、控制台--地區和語言選項--把時間設定為24小時格式。
2、建立 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/OLEAUT/VarConversionLocaleSetting= 2 (DWORD)
註:OLEAUT 項可能不存在。如果它不存在,則必須先建立該項。
3、重新啟動IIS。
問題解決。
原理是強制使asp時間使用地區格式。

二、windows 2003的解決方案(修改地區設定)

在控制台→地區設定→時間樣式和日期格式設定一下:
時間樣式設定為 HH:mm:ss
短日期格式設定為 yyyy-MM-dd
(win2003不需要修改註冊表,有人測試成功了)

三、通用解決方案(在程式裡修改)

可以使用replace 將 "上午" 二字或其他不想要的字元替換掉...

比如 <%=replace(now,"上午","")%>

或者直接替換掉所有的中文字元:Replace(now,"[/u4e00-/u9fa5]","")

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.