簡體   English   中英

無法將 varchar 轉換為日期

[英]Unable to convert varchar to date

我正在嘗試將函數 ( varchar ) 轉換為date ,但收到以下錯誤消息。

錯誤

無法從字符串轉換日期和/或時間。

腳本

DECLARE @MyDate date

SET @MyDate = CONVERT(date, dbo.GETMINDATE(0123), 103)

SELECT @MyDate 

該函數本身返回一個varchar日期,如 - '01 Apr 2010 08:00:00.000'

SQL Server 主機采用法語設置,因此可能是區域設置問題。

如果您對此感到困惑並且無法更改它以修復函數以返回正確的數據類型,那么您可以使用PARSE來指定靜態區域性(因此完全不受服務器區域設置及其用戶的默認設置的影響)。

SELECT PARSE('01 Apr 2010 08:00:00.000' AS date USING 'en-US')

顯然,用您的函數調用替換字符串文字。 當你正在鑄造date的問題,我已經使用了相同的,這將截斷時間部分。

如果不是有意的,請使用datetimedatetime2

所以你猜它可能是區域或語言設置。 你猜對了。 Tibor 在這里討論了日期時間數據類型的所有方面。 他特別提到您使用的格式(帶有月份縮寫)取決於運行時使用的語言設置。 這里有一個小提琴來演示

那么你應該如何解決這個問題? 好吧,您可以強制世界上的其他所有人(您數據庫中的每個用戶)使用其中一種英語語言設置。 不知何故,我認為這在現實世界中不會很好。 似乎可能需要召開團隊會議來確定適當的前進道路。 這是學習軟件設計的艱難課程。

這是一個實驗

--this returns a value
set language english;
select CAST('01 Apr 2010 08:00:00.000' as date);

--this works
set language french;
select CAST('01 Avr 2010 08:00:00.000' as date);

--this errors out 
set language french;
select CAST('01 Apr 2010 08:00:00.000' as date);

因此您可以根據本地設置(您可以在查詢范圍內變化)翻譯該值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM