我需要通過簽名日期過濾註冊的電子郵件,但問題是讓數據庫製作簽名列的人是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分鐘。永遠編寫替代方案是無法衡量的。 –