我有一個文章資料庫,該資料庫將文章發布日期作為 UNIX 時間戳保存為 varchar 值。例如,一篇文章的 datePublished 值為 1667865600000 (varchar)。
我正在查詢資料庫以回傳過去 90 天內包含某個關鍵字的文章。但我不認為我目前的方法是成功地在資料庫中查詢 'datePublished' 值,因為我的發布日期值是 varchar 而不是日期值。但是,我無法驗證這一點,因為它不會讓我知道是否('datePublished' > DATE_SUB(now(), INTERVAL 90 DAY))真的在做任何事情。不過,我確實認為它正在datePublished DESC成功訂購。
如何正確查詢資料庫的 datePublished 值作為 varchar UNIX 時間戳?
這是我的查詢
SELECT *
FROM news
WHERE
(MATCH(snippet) AGAINST("example" IN BOOLEAN MODE))
AND ('datePublished' > DATE_SUB(now(), INTERVAL 90 DAY))
ORDER BY datePublished DESC LIMIT 100
uj5u.com熱心網友回復:
您可以直接過濾 Unix 時間戳:
datePublished > unixtimestamp(now() - interval 90 day)
這應該足以讓 MySQL 將字串隱式轉換為數字。但如果這沒有發生,那么我們可以像這樣強制它:
datePublished 0 > unixtimestamp(now() - interval 90 day)
請注意,我修復了您的原始查詢,其中列名用單引號括起來;這個瑣碎的錯字導致文字列名被用作整個列的固定值......
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/530828.html
