代码之家  ›  专栏  ›  技术社区  ›  David 天宇 Wong

如何使用mysql测试日期和日期时间

  •  1
  • David 天宇 Wong  · 技术社区  · 15 年前

    我的桌子正在使用日期时间 (YYYY-MM-DD HH:MM:SS) 我需要展示今天的参赛作品。

    我的代码只是:

    SELECT   * 
    FROM     table 
    WHERE    date = '$date' 
    ORDER    BY score DESC
    

    $date = date("Y-m-d");
    

    嗯,正如预期的那样,它不起作用:|你们有解决方案吗?

    4 回复  |  直到 15 年前
        1
  •  16
  •   Community datashaman    7 年前

    按照Pascal Martin的说明,您可以从日期+时间字段中提取日期部分:

    SELECT * FROM table WHERE DATE(date) = '2009-12-19'
    

    Source: MySQL - Date and Time Functions

    Stack Overflow: How does one create an index on the date part of DATETIME field in MySql )

        2
  •  4
  •   Pascal MARTIN    15 年前

    你的日期是“2009-12-19”(或类似的,取决于日期),这被解释为“2009-12-19 00:00:00”。

    解决方案是这样比较:

    select *
    from table
    where date >= '2009-12-19'
        and date < '2009-12-20'
    

    select *
    from table
    where date >= '2009-12-19 00:00:00'
        and date < '2009-12-20  00:00:00'
    

    如果你不想计算下一个日期,你可以使用 adddate 功能:

    select *
    from table
    where date >= '2009-12-19'
        and date < adddate('2009-12-19', interval 1 day)
    

    select *
    from table
    where date >= '$date'
        and date < adddate('$date', interval 1 day)
    order by score desc
    
        3
  •  0
  •   DisgruntledGoat    15 年前

    您可能希望在选择数据时对其进行格式化:

    SELECT *, DATE_FORMAT(date, '%Y-%m-%d') AS dateformat FROM table
    WHERE dateformat = '$date' ORDER BY score DESC
    
        4
  •  0
  •   amrinder    15 年前