我正在开发药房商店项目,但我有一个问题,即确定过期的药物总数。从DB我有:
+----+----------+--------+------------+
| id | drug_nam | amount | exp |
+----+----------+--------+------------+
| 1 | M and T | 200 | 04/15/2016 |
| 2 | VIT C | 20 | 05/25/2016 |
| 3 | Pana | 10 | 01/03/2016 |
| 4 | Lonat | 1200 | 08/25/2017 |
| 5 | ProC | 100 | 05/25/2017 |
+----+----------+--------+------------+
我需要的是一行PHP脚本,它将计算来自DB的过期药物数量。使用<?php $d = date('m/d/Y'); ?>
从DB中确定它。
我使用下面的代码,但它只计算2
<?php
$d = date('m/d/Y');
$result = mysqli_query($conn, "SELECT count(exp) FROM products where exp < $d ");
while($row = mysqli_fetch_array($result))
{
echo $row['count(exp)'];
}
答案 0 :(得分:0)
从您的表格中,您似乎为exp
列使用了某种文本或varchar。因为mysql日期格式应该像yyyy-mm-dd
。请将您的exp
列更改为date
并更改以下行
$d = date('m/d/Y');
到
$d = date('Y-m-d');
那应该是好的。
答案 1 :(得分:0)
如果要按日期过滤而不是按字符串过滤,则应将字符串日期表示转换为日期值。 此查询应该有效:
SELECT count(exp) FROM products where STR_TO_DATE(exp, '%d/%m/%Y') < $d
主要缺点是mysql在这种情况下不能使用索引。其中一个解决方案是将列从varchar(50)转换为DATETIME。在这种情况下,您可以使用原始查询。