php/mysql - 日期格式和时间部分

发布于 2024-08-02 05:22:38 字数 512 浏览 3 评论 0原文

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

我有一个 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 脚本时,它不起作用。

有任何想法吗?

非常感谢!

Apologies if this has already been answered many times, but I was unable to find the answer and I was flummoxed.

I have a mysql query which seemingly outputs the result I want when I run it in the database - however when I run the query through PHP, it does not output correctly.

In the database, dates are stored like this:

2009-08-13T00:00:00

What I want to do is NOT display data that is older than todays date. So, in the where clause is do this:

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

My intention is to strip the time portion, as I was struggling to find a way to convert the time part of now() to midnight.

This seems to work when I run it on PHPMyadmin, but when I run the php script it does not.

Any ideas?

Many Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苍暮颜 2024-08-09 05:22:38

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

您没有使用诸如 sprintf 之类的东西来构建字符串,是吗?如果是这样,您需要用另一个 % 转义 %

无论如何,您可以使用函数 DATE()

WHERE `dateField1` > DATE(NOW())

This seems to work when I run it on PHPMyadmin, but when I run the php script it does not.

You're not using something like sprintf to build the string are you? If so, you need to escape the % with another %

In any case, you can use the function DATE()

WHERE `dateField1` > DATE(NOW())
宁愿没拥抱 2024-08-09 05:22:38

尼克夫是对的。我同意这一点。

如果使用 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 see % as type specifier when using sprintf()。

为了避免这种情况,你需要在 MySQL 格式字符串前面再加一个 %,即 %%Y 或 %%m 或 %%d。 MySQL 查询的实际输出将再次变为 %Y 或 %m 或 %d。

nickf is right. I agree with that.

In case of using sprintf() function to make a SQL call, you may turn your query into this:

  $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 see % as type specifier when using sprintf().

To escape this, you need to add one more % in front of MySQL format string, i.e., %%Y or %%m or %%d. The actual output to MySQL query would become %Y or %m or %d again.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文