【问题标题】:Comparing String Dates Pulled From MySql Database比较从 MySql 数据库中提取的字符串日期
【发布时间】:2011-08-21 15:38:33
【问题描述】:

我在 MySQL 数据库中有一个关系,它以 varchar 的形式存储日期以及其他属性。它看起来像:

答案 答案ID 回答 问题ID 日期

我有一个网络应用程序,用户将在其中选择“从”和“到”日期,我需要在提供的范围内提取相关答案。所以我的问题是我将如何实现一个 php 文件来查询数据库正确地提取提供的日期之间的答案..

【问题讨论】:

  • 您将日期存储为 VARCHAR 而不是正确的日期类型之一(例如 DATE 或 DATETIME)的原因是什么?
  • 日期存储在 varchar 中?日期是什么格式?还是YYYY-MM-DD格式吗?
  • 其他人构建了架构,现在它填充了数据..除此之外,日期存储为 dd-mm-yyyy

标签: php mysql html sql database


【解决方案1】:

如果您的日期在 YY-mm-dd 中(从最大到最低,前导零),您可以将其作为字符串进行比较(按字典顺序)

但是您应该为日期使用正确的数据类型(DATEDATETIMETIMESTAMP

【讨论】:

    【解决方案2】:

    正如@RiaD 所写,您使用正确的日期类型。但如果你不能改变类型,你应该 使用 STR_TO_DATE 将 Varchar 字符串转换为 DATETIME。

    http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

    所以你的查询看起来像

    Select * from table
    where STR_TO_DATE(field_name, 'YOUR_DATE_FORMAT') between start_date and end_date;
    

    【讨论】:

      【解决方案3】:

      这是一个简单的解决方案:

      您可以将日期(已存储在您的 MySQL 数据库中)转换为 Unix time 并像任何数字一样进行比较。

      例如

      $date1 =  strtotime("2010-11-12");  
      $date2 =  strtotime("2010-11-14");  
      

      只需比较 $date1$date2

      这里是可以帮助你的链接 http://php.net/manual/en/function.strtotime.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-24
        • 1970-01-01
        • 2021-03-26
        • 1970-01-01
        • 2011-02-27
        • 2012-12-20
        • 2011-02-17
        • 2012-10-19
        相关资源
        最近更新 更多