[英]MySQL results yesterday, last week, last month and last year
我的DateField( artists.onlineDate
)為YYY-MM-DD HH:MM:SS
現在我得到:
-- Today
SELECT * FROM artists WHERE DATE(artists.onlineDate) = CURDATE()
-- Current Week
SELECT * FROM artists WHERE WEEK(artists.onlineDate, 3) = WEEK(CURDATE(), 3)
-- Current Month
SELECT * FROM artists WHERE MONTH(artists.onlineDate) = MONTH(CURDATE())
-- Current Year
SELECT * FROM artists WHERE YEAR(artists.onlineDate) = YEAR(CURDATE())
但是我需要的是確切的:昨天,上周,上個月,去年
我試圖解釋。 如果我們是星期三,並且我使用SELECT * FROM artists WHERE DATE(artists.onlineDate) = CURDATE()
,那么我將在星期一到星期三。
我想有上個星期的星期一至星期日。 前一周的日歷。
和月份和年份相同。
我SUB_DATE
是不正確的方法。
有什么建議么?
確定,我找到了想要的東西:
SELECT * FROM testwoche
WHERE WEEK (datum, 3) = WEEK(current_date, 3) - 1
AND YEAR(datum) = YEAR(current_date) ORDER BY datum DESC
一樣的一個月
SELECT * FROM testwoche
WHERE month (datum) = month(current_date) - 1
AND YEAR(datum) = YEAR(current_date)
ORDER BY datum DESC
這樣可以返回周一至周日的最后一周以及最后一個月
謝謝大家的幫助!
我認為您可以使用SUBTIME函數: https ://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_subtime
我還沒有時間進行真正的測試,但是我想您知道了:
昨天:
SELECT * FROM artists WHERE DATE(artists.onlineDate) = SUBTIME(CURDATE(),'1 0:0:0');
上個星期
SELECT * FROM artists WHERE WEEK(artists.onlineDate, 3) = WEEK(SUBTIME(CURDATE(),'7 0:0:0'), 3)
上個月
SELECT * FROM artists WHERE MONTH(artists.onlineDate) = MONTH(SUBTIME(CURDATE(),'31 0:0:0'))
去年
SELECT * FROM artists WHERE YEAR(artists.onlineDate) = YEAR(SUBTIME(CURDATE(),'365 0:0:0'))
要獲取特定的周/月/年(當您的數據庫中包含數年的數據,並且當前時間是新的一年的開始時,這仍然有效):
SELECT * FROM testwoche WHERE
((YEAR(CURDATE())-YEAR(datum)))*52-WEEK(datum,3)+WEEK(CURDATE(),3) = 1;
如果需要兩周前,可以將其更改為=2
(如果要使用本周,則從星期一到當前天: =0
)。 如果需要上個月,請將WEEK
函數更改為MONTH
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.