我有ID(PK,AI),名稱和日期,當用戶註冊時我設置日期= CURDATE()表。mysql列表數據不包括週末
我有一個PHP頁面,我必須列出其中CURDATE()> =(日期+ 3天)(不包括週末)(週六和週日)的名稱意味着我列出了3天前完成註冊的用戶名,但是我不要算週末。
,如果有人在週一註冊,這意味着,他應該列出的頁面上週四,如果他上週五,註冊頁面列表他只在週三(不包括週末)
有MySQL中的任何一種方法來完成這個 ?
我有ID(PK,AI),名稱和日期,當用戶註冊時我設置日期= CURDATE()表。mysql列表數據不包括週末
我有一個PHP頁面,我必須列出其中CURDATE()> =(日期+ 3天)(不包括週末)(週六和週日)的名稱意味着我列出了3天前完成註冊的用戶名,但是我不要算週末。
,如果有人在週一註冊,這意味着,他應該列出的頁面上週四,如果他上週五,註冊頁面列表他只在週三(不包括週末)
有MySQL中的任何一種方法來完成這個 ?
而不是做一個複雜的MySQL查詢,你不能只是通過不同的日期來檢查,取決於你的PHP腳本的工作日?
因此,而不是在你的SQL查詢您的日期+3天< =今天相比,傳遞一個變量的日期偏移或只是計算在PHP的日期和傳遞日期。
day of the week | offset
1 | 5
2 | 5
3 | 5
4 | 3
5 | 3
6 | 4
7 | 5
易在MySQL中。
SELECT CURRENT_DATE + interval (3 + 2*(weekday(CURRENt_DATE) > 1)) day;
感謝@JamesBlond的表格,節省我解釋。 ;-)
編輯:我很困惑(索引查殺)的方式來請求數據:通常你應該嘗試從表未修改的日期,並搗鼓你的CURRENT_DATE數據。
只要我理解你的權利,它應該是以下內容,所以你也可以簡單地使用CASE WHEN
clasue,這是更具可讀性和更容易採用。
thedate - 間隔( 3 + 2 *(平日(thedate)< 3) +(平日(thedate)> 4)*(平日(thedate)-4))DAY AS 3_days_before
http://www.sqlfiddle.com/#!2/49731/9/0
THEDATE WEEKDAY(THEDATE) THEDATE_FORMATTED 3_DAYS_BEFORE FORMATTED_3_DAYS_BEFORE
April, 27 2014 00:00:00+0000 6 Sunday April, 22 2014 00:00:00+0000 Tuesday
April, 28 2014 00:00:00+0000 0 Monday April, 23 2014 00:00:00+0000 Wednesday
April, 29 2014 00:00:00+0000 1 Tuesday April, 24 2014 00:00:00+0000 Thursday
April, 30 2014 00:00:00+0000 2 Wednesday April, 25 2014 00:00:00+0000 Friday
May, 01 2014 00:00:00+0000 3 Thursday April, 28 2014 00:00:00+0000 Monday
May, 02 2014 00:00:00+0000 4 Friday April, 29 2014 00:00:00+0000 Tuesday
May, 03 2014 00:00:00+0000 5 Saturday April, 29 2014 00:00:00+0000 Tuesday
May, 04 2014 00:00:00+0000 6 Sunday April, 29 2014 00:00:00+0000 Tuesday
May, 05 2014 00:00:00+0000 0 Monday April, 30 2014 00:00:00+0000 Wednesday
May, 06 2014 00:00:00+0000 1 Tuesday May, 01 2014 00:00:00+0000 Thursday
May, 07 2014 00:00:00+0000 2 Wednesday May, 02 2014 00:00:00+0000 Friday
對不起,這個邏輯不起作用:( – Joel
是的,我沒有照顧星期六和星期日,因爲我以爲你只是想在星期幾算上。啊,我明白了,你想要回到3天前,而不是前鋒 – flaschenpost
你必須寫這個方法 – user3470953
爲什麼你想在mysql中完成而不是在php中完成?我會說這會容易很多。 –
使用MySQL函數DAYOFWEEK()http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_dayofweek跳過日期 – StanislavL