【问题标题】:SQL/PHP - Select between two dates, with date printed out [duplicate]SQL/PHP - 在两个日期之间选择,并打印出日期[重复]
【发布时间】:2017-12-31 07:45:52
【问题描述】:

我试图在 PHP 和 SQL 中的两个日期之间进行选择。但是,我的 PHP 日期是这样打印的:

July 1, 2017

July 30, 2017

问题是,在我选择的数据库中,日期是这样存储的 yyyy-MM-DD: 2017-07-012017-07-30

我正在尝试进行查询,以在两个日期之间进行选择:

SELECT dl.list_id, dl.id, dl.date, dl.list_name, dl.list_supplier, dls.reference, dls.mawb, dls.shipment, dls.kg
FROM driving_lists dl LEFT JOIN
driving_list_shipments dls
ON dl.list_id = dls.list_id
WHERE dl.deleted=0 AND dls.kg > 0 AND dl.date between 'FORMAT(July 01, 2017,'yyyy-MM-DD')' and 'FORMAT(July 30, 2017,'yyyy-MM-DD')'
ORDER BY dl.list_id

所以,问题在于:

dl.date between 'FORMAT(July 01, 2017,'yyyy-MM-DD')' and 'FORMAT(July 30, 2017,'yyyy-MM-DD')'

如何通过将日期转换为数据库使用的格式在两个日期之间进行选择?

【问题讨论】:

  • 试试这个 => UNIX_TIMESTAMP(date) ..in mysql

标签: php mysql sql date


【解决方案1】:

试试 date() php 函数
像这样

$date1='July 30, 2017';
$date1=date('Y-m-d',strtotime($date1));
$date2='July 1, 2017';
$date2=date('Y-m-d',strtotime($date2));

如果您打印 $date1$date2,它看起来像

"2017-07-30"

"2017-07-01"

【讨论】:

    【解决方案2】:

    如果你想在数据库中进行转换,你应该使用str_to_date()

    WHERE dl.deleted = 0 AND dls.kg > 0 AND
          dl.date between str_to_date('July 01, 2017', '%M %d, %Y') and 
                          str_to_date('July 30, 2017', '%M %d, %Y')
    

    注意:dl.date 应作为日期存储在数据库中。

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 2021-01-18
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 2015-03-11
      相关资源
      最近更新 更多