【问题标题】:Mysql query: retrieve current date queryMysql查询:检索当前日期查询
【发布时间】:2009-07-06 09:59:30
【问题描述】:

在 mysql 数据库中,我有这个名为:

姓名:日期

类型:日期时间

我在该列中的值很少:

2009-01-05 01:23:35

2009-03-08 11:58:11

2009-07-06 10:09:03

如何检索当前日期?我正在使用 php。

在 php 中:

<?php $today = date('Y-m-d');?>

如何编写一个mysql查询来检索所有今天的日期数据?

我是否应该将列类型更改为“日期”,然后只插入“2009-07-06”之类的值,没有时间值???

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    不用PHP,MySQL有获取当前日期的功能:

    SELECT field FROM table WHERE DATE(column) = CURDATE()
    

    文档:CURDATEDATE

    如果您的列只需要日期部分而不需要时间,您应该将列类型更改为 DATE。如果你坚持通过 PHP 来做,那是一回事,真的:

    $today = date('Y-m-d');
    $query = mysql_query("
        SELECT field FROM table WHERE DATE(column) = '$today'
    ");
    

    【讨论】:

    • 这是我最后的选择。因为我的服务器时区与我的国家不同。我将日期值存储在本地时区...
    • 我可以看到相似之处,但我只是害怕,以防万一,时区冲突。所以,我必须先将我的栏目改为“日期”,对吧?非常感谢您的快速回答。
    • 如果将列更改为 DATE,则可以删除列周围的 DATE() 函数调用。该函数用于从 DATETIME 列中提取 DATE 以进行比较。如果您只需要 DATE,那么您可能应该更改列类型。
    • 然后你可以设置每个连接的时区,见dev.mysql.com/doc/refman/5.1/en/time-zone-support.html 例如设置时区="+10:00";现在选择();
    • @Paolo:如果我不需要时间,但我仍然将日期+时间值存储到数据库中,这有关系吗?你能推荐几个解决方案吗,因为我已经有 4000 个用户订阅了。全部存储在日期时间值中。但我只需要日期值。
    【解决方案2】:

    对于日期时间它没有用,而是我尝试这个并工作......

    今天的访客!

    sql > select user_id from users where last_visit like concat('%' , CURDATE() , '%');

    // 'datetime' 类型的 last_visit 列

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多