0

我正在运行一个 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 回显

1 jan 2012
27 Jun 2012

$weekstarting 和 $weekending 回声

24 Jun 2012
30 Jun 2012

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

4

2 回答 2

1

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

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

于 2012-06-27T11:13:04.993 回答
1
$weekending = date('j M Y', strtotime('next saturday'))."<br>";
                                                       ^^^^^^^

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

这将您的查询变成:

select * from MISYearToDate('24 Jun 2012<br>', '30 Jun 2012<br>')
于 2012-06-27T11:22:09.157 回答