php - 如何使用php检查项目是否已过期

标签 php mysql datetime

我有一个表格,用于更新某人购买的保单。

我的想法是,应该检查要续订的项目的到期日期 根据续订表格中的新购买日期。

我试过了:

$check="SELECT * FROM transactions WHERE Expiry_Date > '$_POST[newDate]' and Policy_Number = '$_POST[Policy_Number]' ";

但它没有进行正确的检查。

相反,例如,如果到期日期是“2015-23-9”而新日期是“2015-22-9”,它仍然接受不应该是的数据,但如果新日期是例如“2014- 22-19"然后它会给出我正在寻找的派生结果。

关于我的 sql 语句,如何使用新日期检查项目 (policy_number) 及其过期日期以查看该项目是否真的过期?

最佳答案

您似乎正在使用这样的格式来存储日期:YYYY-DD-M 看起来它们以这种方式存储在您的列中,并以这种方式在您的查询中呈现给 DBMS。

以这种方式存储的日期将无法正确地相互比较。

在你的 SQL 中试试这个

 WHERE STR_TO_DATE(Expiry_Date, '%Y-%d-%m') >
                         STR_TO_DATE('$_POST[newDate]' , '%Y-%d-%m')

格式化字符串 '%Y-%d-%m' 告诉 STR_TO_DATE() 您的字符串采用 YYYY-DD-M 格式。如果你给这个函数一个像 2014-22-19 这样的虚假日期,它会返回 NULL,所以要小心。

这会将您的输入和列值都转换为 DATE 字段,这会按照您期望的方式进行比较。

更好的是,如果可以的话,切换到对日期使用 YYYY-MM-DD 字符串格式,并在列中使用 DATE 数据类型。您会喜欢它的,因为您可以使用索引加快处理速度。

关于php - 如何使用php检查项目是否已过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26486047/

相关文章:

php - DataTable 1.10.15 表显示所有结果,而不是在 PHP 中显示 10 行

php - #1045 - 用户 'root' @'localhost' 的访问被拒绝(使用密码 : YES))

python - 字符串转换时间

php - 在 var/www/html/admin/vendor/nesbot/carbon/src/Carbon/Traits/Units.php 中遇到格式不正确的数值

PHP 减少数据库上的口是心非连接

mysql - 通过 SSH session 使用 mysqldump 时显示的明文密码条目

mysql - 如何在复杂的 MySQL 查询中正确添加 WHERE 语句?

mysql - 将 Excel 订单发票转换为 SQL INSERT 查询

excel - 年/月/日 HH :MM:SS offset to MM/DD/YYYY HH:MM:SS offset?

c# - DateTime.ToString 从所有格式到 dd/MM/YYYY?