SQL / PHP - 在两个日期之间选择,打印日期

时间:2017-07-25 11:47:32

标签: php mysql sql date

我试图在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')'

如何通过将其转换为数据库使用的格式来选择两个日期?

2 个答案:

答案 0 :(得分:0)

如果要在数据库中进行转换,则应使用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应作为日期存储在数据库中。

答案 1 :(得分:0)

尝试使用 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"