簡體   English   中英

從字符串錯誤轉換日期和/或時間時,MSSQL Server 2008轉換失敗

[英]MSSQL Server 2008 Conversion failed when converting date and/or time from character string Error

我當前收到MSSQL Server 2008錯誤: Conversion failed when converting date and/or time from character string.

我檢查了以下線程,但仍然沒有任何不足:

在插入datetime時從字符串 轉換日期和/或時間時轉換失敗在SQL SERVER 2008中從字符串轉換日期和/或時間時轉換失敗

這是查詢(我正在使用PHP的PDO SQLSRV):

SELECT ISNULL(MYDATE,'None') AS MYDATE, 
ISNULL(CAST(rnm AS NVARCHAR(50)),'None') AS Rnm, 
DATENAME(dw, MYDATE) as nameOfDay, 
FROM tab1
INNER JOIN rnm ON (tab1.rte = rnm.rte)
WHERE DATEDIFF(S, '1970-01-01', MYDATE) >= :startDate
AND DATEDIFF(S, '1970-01-01', MYDATE) <= :endDate
GROUP BY MYDATE, CAST(rnm AS NVARCHAR(50)) WITH ROLLUP

在MSSQL中,MYDATE字段的類型為datetime 我嘗試將每個MYDATE變量和1970-01-01都強制轉換為日期時間,但仍然收到錯誤。

不幸的是,“ rnm”被強制轉換為VARCHAR,因為它仍然是使用“文本”類型的舊數據庫。

謝謝。

---更新:

$startDate = strtotime($_GET['startDate'] . " 00:00:00");
$endDate = strtotime($_GET['endDate'] . " 23:59:59");

然后,通過bindParam()將以上內容綁定到准備好的變量。

您正在按日期時間MYDATE分組,而不是由varchar的IsNull(MYDATE,'None')分組,有時將'None'作為值存儲。 WHERE子句中的所有那些DATEDIFF和轉換將導致性能問題。 嘗試刪除DATEDIFF,並以datetime格式傳遞startdate / enddate。

暫無
暫無

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

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