我不解的說出來了昨天的藍色我的生產服務器上的錯誤。 我做一個LINQ2SQL查詢,如:日期時間轉換停止工作
var mis = from m in dtcx.valori
join p in dtcx.TEPARAMs on m.PARAMCD equals p.PARAMCD
where
blah blah blah
select new
{
dataRilevazione = m.dataRilevazione,
id =m.data>=new DateTime(2010,02,26)&&m.X==3&&m.Y==69?100: m.id,
blah blha
};
此轉換成具有條件的SQL查詢:
N'SELECT [t0].[dataRilevazione],
(CASE
WHEN ([t0].[data] >= @p6) AND ([t0].[X] = @p7) AND ([t0].[Y] = @p8) THEN @p9
與
@p6='2010-02-26 00:00:00'
這就像一個魅力的工作很長一段時間,因爲兩天前它停止工作時說,從varchar到datetime的轉換有錯誤。
爲事實上的問題是2010-02-26 00:00:00是沒有更多的轉換爲日期!如果我嘗試
打印
convert(datetime,'2010-02-26 00:00:00' )
我得到了同樣的錯誤,這消失使用
convert(datetime,'2010-02-26 00:00:00', datetime)
,因爲當所有的工作,我沒有改變用戶,還是其語言環境,也沒有任何東西,我我知道。
我能做些什麼? 感謝
UPDATE: 剖析SQL Server中,LINQ 2 SQL似乎設置正確的語言:
-- network protocol: TCP/IP
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language us_english
set dateformat mdy
set datefirst 7
set transaction isolation level read committed
所以語言設置爲美國英語!爲什麼轉換仍然失敗超出了我! 每一個想法是讚賞...
什麼'SELECT @@ LANGUAGE'返回?在SQL Server的'CONVERT('2010-02-26 00:00:00',datetime)中,這也是(這可能是你的拼寫錯誤)'總是會出錯,因爲這在語法上是不合適的。您需要交換數據類型和值(即'CONVERT(datetime,'2010-02-26 00:00:00')')。 –
您是否將p6參數設置爲日期時間,如DECLARE @ p6 datetime? –
chris,我的排字錯誤 el ninho,因爲它是由linq2sql – pomarc