我有一个表格,用于更新某人购买的保单。
我的想法是,应该检查要续订的项目的到期日期 根据续订表格中的新购买日期。
我试过了:
$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/