【问题标题】:MySQL date formats - difficulty querying on a dateMySQL 日期格式 - 难以查询日期
【发布时间】:2012-03-28 01:55:23
【问题描述】:

我想在我的 PHP 中执行这样一个简单的查询,

SELECT noslots FROM calender WHERE coursedate = '01-01-2012';

但是我的日期以标准 YYYY-MM-DD 格式存储在数据库中,所以显然我没有得到任何结果。

我已尝试通读手册,但对于初学者来说很难提取正确的信息

感谢您提供的任何帮助!

[=

【问题讨论】:

    标签: php mysql date format


    【解决方案1】:

    你可以使用 -

    SELECT noslots
    FROM calender
    WHERE coursedate = STR_TO_DATE('01-01-2012', '%d-%m-%Y');
    

    您可能需要根据日期格式切换 %d 和 %m。

    【讨论】:

    • 太棒了。之前的评论让我很担心..非常感谢你
    • 如果这个日期是用户输入的,你应该确保它在被传递到 SQL 之前被正确清理。
    【解决方案2】:

    MySQL 唯一支持的日期/时间格式是yyyy-mm-dd hh:mm:ss。您不能传递任何其他字符串并将其正确解析为日期。将日期正确格式化为 mysql 格式取决于您,这意味着您必须在查询中传递 2012-01-01

    【讨论】:

    • 那么在我查询时是否没有办法(比如在 oracle 中使用 TO_DATE)来更改它?
    • 可以,但是在 SQL 中对从外部引入的数据进行字符串操作并不是最好的主意。
    【解决方案3】:

    我会使用 PHP 的 date()strtotime() 函数:

    mysql_query("SELECT `noslots` FROM `calender` WHERE `coursedate` = '" . date('Y-m-d H:i:s', strtotime('01-01-2012')) . "'");
    

    【讨论】:

      猜你喜欢
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多