MySQL 和 SQL Server: nvarchar 数据类型转换为日期时间

标签: MySQL SQLServer PHP
发布时间: 2017/4/9 22:44:34
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

出现此错误消息︰

Nvarchar 数据类型转换为日期时间

当我尝试绑定 MySQL datetime 变量到 smalldatetime 服务器 SQL 语句中的变量。代码看起来像︰

$s = $dbcnx->prepare("SELECT MAX(attr_81577_) AS max_date FROM object_70969_");
$s->execute();
$r = $s->fetch(PDO::FETCH_ASSOC);
$max_date = $r[max_date]; // we got the maximum date from MySQL table

$s = $dbms->prepare("SELECT * FROM orgs WHERE update_date >= :max_date"); // Now we want to filter SQL Server table based on $max_date value
$s->bindParam(':max_date', $max_date);
$s->execute();

什么是错什么,能做吗?

解决方法 1:

认为,您的 SQL 服务器可能被混淆的非标准日期格式使用。"2015年-09-18 16:22",当然,是一个相当合理的格式,但它是标准日期文字格式的 SQL 服务器列表。

所以,我会试着使用完全明确的 ISO 8601 格式,格式将日期作为"2015年-09-18T16:22:00"。PHP 具有特定的格式为 ISO 8601,"c",但讽刺的是,这是与 SQL Server 的 ISO 8601 格式不兼容。所以,请尝试︰

date('Y-m-d\TH:i:s', strtotime($max_date));

请注意,不完全知道什么,作为日期格式使用与 SQL Server 的一般工作好,所以也许这相关到特定的服务器配置 (简写或语言设置?) 或与 PDO;我不太了解,PDO SQL Server 驱动程序。

当然,SQL Server 传统上用于 Microsoft 客户端代码,将绑定到日期参数,而不是字符串的实际日期对象,,所以,你永远不会得担心的格式。不确定的如果有办法做那件事与 PDO。

官方微信
官方QQ群
31647020