![](/img/trans.png)
[英]Conversion failed when converting date and/or time from character string when converting inputted time | SQL, SQLSRV
[英]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.