[英]Datetime acting weird on different computers
我正在嘗試制作一個程序,該程序將在SQL Server上執行一些查詢,由於某種原因,該代碼具有奇怪的行為,因為它將在我的兩台計算機上創建不同的日期值。
這是奇怪的代碼部分。
Query += " dbo.MensajesProcesados.SentDateTime BETWEEN CONVERT(VARCHAR, '" + FechaInicio.Value.ToUniversalTime().ToShortDateString() + "', 103) AND CONVERT(VARCHAR, '" + FechaFin.Value.ToUniversalTime().ToShortDateString() + "', 103)";
在第一台計算機(工作中)給我:
BETWEEN CONVERT(VARCHAR, '5/18/2015', 103) AND CONVERT(VARCHAR, '5/19/2015', 103)
第二台不工作的計算機:
BETWEEN CONVERT(VARCHAR, '17/05/2015',103) AND CONVERT(VARCHAR, '19/05/2015',103)
這是行不通的,將輸出以下錯誤
從varchar數據類型到datetime數據類型的轉換導致值超出范圍。
請,任何幫助將是巨大的!
為Sql Server
提供文化中立格式'yyyyMMdd'
:
Query += " dbo.MensajesProcesados.SentDateTime
BETWEEN '" + FechaInicio.Value.ToString("yyyyMMdd") + "'
AND '" + FechaFin.Value.ToString("yyyyMMdd") + "'";
這與SQL Server的文化/語言有關。 請參閱此處: SQL Server日期時間問題。 美國與英國?
set language us_english
declare @d datetime = '1929/12/18'
您可以按照問題中的解決方案並手動更改語言,也可以通過輸入月份和年份來構建日期,從而沒有翻譯的余地,請參見此處的一些答案: 使用T-SQL創建日期
DECLARE @day int, @month int, @year int
SELECT @day = 4, @month = 3, @year = 2011
SELECT dateadd(mm, (@year - 1900) * 12 + @month - 1 , @day - 1)
嘗試使用CONVERT而不是CAST。
CONVERT允許第三個參數指示日期格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.