Php 从字符串错误转换日期和/或时间时,MSSQL Server 2008转换失败

Php 从字符串错误转换日期和/或时间时,MSSQL Server 2008转换失败,php,sql-server,sql-server-2008,pdo,Php,Sql Server,Sql Server 2008,Pdo,我当前收到MSSQL Server 2008错误:从字符串转换日期和/或时间时转换失败。 我已经检查了以下线程,但仍然没有运气: 以下是查询(我使用的是PHP的PDO SQLSRV): 然后,通过bindParam()将上述内容绑定到准备好的变量,您将按MYDATE进行分组,MYDATE是datetime,而不是IsNull(MYDATE,'None'),IsNull是varchar,有时将'None'存储为值。 WHERE子句中的所有这些日期差异和转换都将导致性能问题。尝试删除DateDi

我当前收到MSSQL Server 2008错误:
从字符串转换日期和/或时间时转换失败。

我已经检查了以下线程,但仍然没有运气:

以下是查询(我使用的是PHP的PDO SQLSRV):


然后,通过
bindParam()

将上述内容绑定到准备好的变量,您将按MYDATE进行分组,MYDATE是datetime,而不是IsNull(MYDATE,'None'),IsNull是varchar,有时将'None'存储为值。
WHERE子句中的所有这些日期差异和转换都将导致性能问题。尝试删除DateDiff并以datetime格式传递startdate/enddate。

您是否尝试了“1970-01-01 00:00:00.0000000”而不是“1970-01-01”?也许这就是问题所在:
ISNULL(MYDATE,'None')作为MYDATE
。可能错误发生在尝试将“无”转换为日期时。我不确定它是否总是从db或您当地的别名使用MYDATE。steven一针见血。问题是ISNULL(MYDATE,'None')、更改为ISNULL(convert(varchar(10),MYDATE),'None')、以及groupby子句中的alsoor在MYDATE上删除ISNULL()。让它返回NULL并在前端处理它。datediff()返回整数。您正在将整数与日期进行比较。既然:startDate和endDate只是datetime,为什么不选择MYDATE>=startDate
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
$startDate = strtotime($_GET['startDate'] . " 00:00:00");
$endDate = strtotime($_GET['endDate'] . " 23:59:59");