如何从php中的db确定今天日期以下的日期

时间:2016-08-29 20:19:56

标签: php mysql

我正在开发药房商店项目,但我有一个问题,即确定过期的药物总数。从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)'];
}

2 个答案:

答案 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。在这种情况下,您可以使用原始查询。