很抱歉,这个问题已经被回答过很多次了,但我找不到答案,我很困惑。

我有一个 mysql 查询,当我在数据库中运行它时,它似乎输出了我想要的结果 - 但是当我通过 PHP 运行查询时,它没有正确输出。

在数据库中,日期的存储方式如下:

2009-08-13T00:00:00

我想要做的不是显示早于今天日期的数据。因此,在 where 子句中执行以下操作:

        WHERE dateField1 >= DATE_FORMAT(now(),'%Y-%m-%d') AND dateField2 >= DATE_FORMAT(now(),'%Y-%m-%d')

我的目的是去掉时间部分,因为我正在努力寻找一种将 now() 的时间部分转换为午夜的方法。

当我在 PHPMyadmin 上运行它时,这似乎有效,但当我运行 php 脚本时,它不起作用。

有任何想法吗?

非常感谢!

有帮助吗?

解决方案

当我在 PHPMyadmin 上运行它时,这似乎有效,但当我运行 php 脚本时,它不起作用。

你没有使用类似的东西 sprintf 你是要构建字符串吗?如果是这样,你需要逃离 % 和另外一个 %

无论如何,您都可以使用该功能 DATE()

WHERE `dateField1` > DATE(NOW())

其他提示

nickf是正确的。我同意。

在使用的sprintf()函数来进行SQL调用的情况下,您可以把您的查询,这样的:

  $query = sprintf("SELECT * FROM SOME_TABLE WHERE id=%s AND dateField1 >= DATE_FORMAT(now(),'%%Y-%%m-%%d') AND dateField2 >= DATE_FORMAT(now(),'%%Y-%%m-%%d')", $id);
//Then submit $query for SQL query processing...

PHP看到%为类型说明符使用时的sprintf()。

要逃避此,需要在MySQL格式字符串,即%% Y或%%米或%% d的前面加一个更%。实际输出到MySQL查询将成为%Y或%米或%d试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top