我需要通过签名日期过滤注册的电子邮件,但问题是让数据库制作签名列的人是varchar(255)而不是日期戳或类似的东西。 通常我会做这样的事情:Mysqli convert varchar date
SELECT * FROM email WHERE signoff >= DATE_SUB(NOW(), INTERVAL 1 DAY
有什么办法来解决这个问题不改变的数据类型,因为已经有很多数据库中的数据。
我需要通过签名日期过滤注册的电子邮件,但问题是让数据库制作签名列的人是varchar(255)而不是日期戳或类似的东西。 通常我会做这样的事情:Mysqli convert varchar date
SELECT * FROM email WHERE signoff >= DATE_SUB(NOW(), INTERVAL 1 DAY
有什么办法来解决这个问题不改变的数据类型,因为已经有很多数据库中的数据。
在性能方面它也许是更好的对比转换为字符串
$result = $dbhandle->query("SELECT * FROM email WHERE signoff >= CAST(DATE_SUB(NOW(), INTERVAL 1 DAY) AS CHAR(255));
但我会建议,给刚修好列,:您可以使用STR_TO_DATE功能是这样的。
你必须执行以下步骤
呀,这是很容易的:
$result = $dbhandle->query("SELECT * FROM email WHERE str_to_date(signoff, '%Y-%m-%d %H:%i:%s') >= DATE_SUB(NOW(), INTERVAL 1 DAY");
更改日期格式STR_TO_DATE以匹配VARCHAR列的日期格式。
年有一个函数:
STR_TO_DATE('2011-12-21 02:20pm', '%Y-%m-%d %h:%i%p')
你需要将其转换。如果多数民众赞成可能
$result = $dbhandle->query("SELECT * FROM email WHERE STR_TO_DATE(signoff , '%m/%d/%Y') >= DATE_SUB(NOW(), INTERVAL 1 DAY");
修复色谱柱需要15分钟。永远编写替代方案是无法衡量的。 –