PHP输入MS SQL无法从字符串转换日期和/或时间

时间:2012-06-27 11:08:01

标签: php sql sql-server

我正在运行MSSQL函数并返回PHP,我在PHP中使用该函数两次并将其写入MySQL数据库。

我第一次运行该函数时我正在使用$ to和$ from(我很清楚它不是很漂亮,我不是交易的php编码器......)

$to = date("j M Y", mktime());
$year = date("Y", mktime());
$jan = '1 jan ';
$from = $jan . $year;

我正在使用以下

select * from MISYearToDate('$from', '$to')

这绝对没问题。

当我做同样的事情,但使用

输入本周的日期
$weekstarting = date('j M Y', strtotime('last sunday'))."<br>";
$weekending = date('j M Y', strtotime('next saturday'))."<br>";

然后运行

select * from MISYearToDate('$weekstarting', '$weekending')

我收到了错误

[Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting date and/or time from character string. ) 

$ From和$ to echo

1 jan 2012
27 Jun 2012

$ weekstarting和$ weekendnding echo

24 Jun 2012
30 Jun 2012

据我所知,确实没有区别,我真的很困惑!

2 个答案:

答案 0 :(得分:1)

我建议只以yyyy-mm-dd的格式将日期输入SQL。这将确保SQL不会与日期格式混淆。

SQL不接受格式为2012年1月1日的日期(作为字符串)。

答案 1 :(得分:1)

$weekending = date('j M Y', strtotime('next saturday'))."<br>";
                                                       ^^^^^^^

<br>不是SQL日期字符串的有效组件。您可能正在浏览器中查看输出,因此<br>被有效隐藏,但这就是您的问题所在。

这会将您的查询转变为:

select * from MISYearToDate('24 Jun 2012<br>', '30 Jun 2012<br>')