【发布时间】:2019-02-28 19:53:13
【问题描述】:
我正在尝试生成报告,但它返回的数据不正确。我正在尝试搜索两个不同日期之间的信息。
$data1 = '21/02/2019 03:46';
$data2 = '16/08/2019 03:46';
$data1 = DateTime::createFromFormat('d/m/Y H:i', $data1)->format('Y-m-d');
$data2 = DateTime::createFromFormat('d/m/Y H:i', $data2)->format('Y-m-d');
echo $data1;
$sql = "
SELECT p.pedido_id
, p.pedido_status
, STR_TO_DATE(p.pedido_data,'%d/%m/%Y') as pedido_data
, l.lista_pedido
, l.lista_item as item_id
, l.lista_title as item_title
, SUM(l.lista_qtde) as total
FROM pedido p
JOIN lista l
ON lista_pedido = pedido_id
WHERE pedido_status = 3
AND (pedido_data >= $data1 AND pedido_data <= $data2)
GROUP by item_id;
";
$query = mysqli_query($conn,$sql);
当它出现结果时,它也会带来其他日期的结果。
这是结果表:
253 Fio de Malha - Marfim 2018-12-08
254 Fio de Malha - Areia 2018-12-07
257 Kit Clutch alça corrente Pérola 2019-02-18
258 Alça corrente Acrílica - Branca 2019-02-18
259 Alça corrente Acrílica - Preta 2019-02-18
261 Alça corrente Acrílica - Goiaba 2019-02-19
262 Alça corrente Acrílica - Vermelha 2019-02-24
263 Alça corrente Acrílica - Marrom 2019-02-26
如果有人能帮助我解决这个问题,我将不胜感激。我不知道我哪里出错了。
【问题讨论】:
-
你出错的地方是不将日期存储为日期。
-
您在 sql 中缺少日期文字周围的单引号(应该是
pedido_data >= '$data1'。但如果您使用带参数而不是字符串插值的准备好的语句会更好。按 item_id 分组语句的结尾也不好看。您的语句很可能违反 SQL 标准。 -
您正在尝试使用字典(字典)排序在日期之间进行搜索。一般来说,这没有什么意义,但是当使用 D/M/Y 作为格式时,它完全失败了。
-
感谢您对我温柔@Shadow,我有时可以成为试纸
-
@RiggsFolly 我也错过了 :)