取值為0~6,對應(yīng)星期一到星期日,每周以星期一為第一天
十多年的霍林郭勒網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整霍林郭勒建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“霍林郭勒網(wǎng)站設(shè)計”,“霍林郭勒網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
取值為1~7,對應(yīng)星期日到星期六,每周以星期日為第一天
取值為Sunday~Saturday,對應(yīng)星期日到星期六,第一天是星期日;
該函數(shù)與參數(shù)lc_time_names有關(guān),如果設(shè)置此參數(shù)值為"zh_CN",則得到對應(yīng)的中文名稱“星期日”~“星期六”
示例:
2017-01-02是星期一,使用這三個函數(shù)分別得到的是0,2,Monday
修改lc_time_names參數(shù)后,得到中文名稱:
該函數(shù)用于獲取日期是年度中的第幾周。該函數(shù)比較復(fù)雜,使用不同的mode,得到不同的結(jié)果。見下表:
例如,mode值為1,則每周的第一天為周一,week()函數(shù)的結(jié)果為0~53,如果第一個周天數(shù)少于4,則記為第0周,如果第一個周天數(shù)大于等于4,則記為第1周。
再如,mode值為2,則每周第一天為周日,week()函數(shù)的結(jié)果為1~53,如果第一個周里包含了周日,則記為第1周,如果第一個周里沒有周日,則記為上一年度的最后一周。
實際上,這個參數(shù)主要是為了解決跨年的周該如何歸屬的問題,是算作本年度的第一周,還是上一年度的最后一周,又或者是算作第0周。這需要根據(jù)使用場景和習(xí)慣來選擇。
但不管怎么歸屬,week函數(shù)本身的取值范圍有限,所以再跨年的時間區(qū)間一般不用此函數(shù)(后邊舉例說明)。
參考:
假設(shè)我們有一張銷售表,內(nèi)容如下:
現(xiàn)在,我們要統(tǒng)計每周的銷售額。
首先想到的是用week函數(shù),計算日期對應(yīng)的周數(shù),然后按照這個周數(shù)來進行分組求和:
如果能保證這個日期區(qū)間是在一個年度內(nèi)的,那么用week函數(shù)完全沒有問題。
很不幸的是,通常日期區(qū)間是跨年的,例如我們這個示例中的數(shù)據(jù),恰好有跨年的周,2010-12-31日是第52周,2011-01-01變成了2011年度的第0周,而實際上這兩天是在同一周。
要解決這個問題,我們不能指望week函數(shù),因為該函數(shù)的返回結(jié)果總是在0~53循環(huán),我們需要找一個固定時間為第一周,之后的周數(shù)累加而非循環(huán)。
例如,我們選擇2010-01-03為第一周的第一天,之后的任意一天201x-xx-xx距離2010-01-03的天數(shù)/7記為周數(shù),得到結(jié)果如下:
以上解決方案中,我們選擇2010-01-03為起始日期,因為它離我們要統(tǒng)計的時間足夠遠,同時它是星期日(我們認為周日是一周的第一天)。
如果我們需要把星期一當作第一天,只需要改為2010-01-04即可。
mysql有豐富的時間函數(shù):
ADDTIME (date2 ,time_interval ) //將time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉(zhuǎn)換時區(qū)
CURRENT_DATE ( ) //當前日期
CURRENT_TIME ( ) //當前時間
CURRENT_TIMESTAMP ( ) //當前時間戳
DATE (datetime ) //返回datetime的日期部分
DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或時間
DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式顯示datetime
DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上減去一個時間
DATEDIFF (date1 ,date2 ) //兩個日期差
DAY (date ) //返回日期的天
DAYNAME (date ) //英文星期
DAYOFWEEK (date ) //星期(1-7) ,1為星期天
DAYOFYEAR (date ) //一年中的第幾天
EXTRACT (interval_name FROM date ) //從date中提取日期的指定部分
MAKEDATE (year ,day ) //給出年及年中的第幾天,生成日期串
MAKETIME (hour ,minute ,second ) //生成時間串
MONTHNAME (date ) //英文月份名
NOW ( ) //當前時間
SEC_TO_TIME (seconds ) //秒數(shù)轉(zhuǎn)成時間
STR_TO_DATE (string ,format ) //字串轉(zhuǎn)成時間,以format格式顯示
TIMEDIFF (datetime1 ,datetime2 ) //兩個時間差
TIME_TO_SEC (time ) //時間轉(zhuǎn)秒數(shù)]
WEEK (date_time [,start_of_week ]) //第幾周
YEAR (datetime ) //年份
DAYOFMONTH(datetime) //月的第幾天
HOUR(datetime) //小時
LAST_DAY(date) //date的月的最后日期
MICROSECOND(datetime) //微秒
MONTH(datetime) //月
MINUTE(datetime) //分返回符號,正負或0
SQRT(number2) //開平方
為了連接服務(wù)器,當你調(diào)用mysql時,你通常將需要提供一個MySQL用戶名和很可能,一個口令。如果服務(wù)器運行在不是你登錄的一臺機器上,你也將需要指定主機名。聯(lián)系你的管理員以找出你應(yīng)該使用什么連接參數(shù)進行連接(即,那個主機,用戶名字和使用的口令)。一旦你知道正確的參數(shù),你應(yīng)該能象這樣連接:
shell mysql -h host -u user -p
Enter password: ********
********代表你的口令;當mysql顯示Enter password:提示時輸入它。
如果能工作,你應(yīng)該看見mysql提示后的一些介紹信息:
shell mysql -h host -u user -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 459 to server version: 3.22.20a-log
Type 'help' for help.
mysql
提示符告訴你mysql準備為你輸入命令。
一些MySQL安裝允許用戶以“anoymous”(匿名)用戶連接在本地主機上運行的服務(wù)器。如果在你的機器是這種情況,你應(yīng)該能通過沒有任何選項地調(diào)用mysql與該服務(wù)器連接:
shell mysql
在你成功地連接后,你可以在mysql提示下打入QUIT隨時斷開:
mysql QUIT
Bye
你也可以鍵入control-D斷開。
在下列章節(jié)的大多數(shù)例子都假設(shè)你連接到服務(wù)器。由mysql提示指明他們。
select,projectID?empName,weekend?from?table?group?by?projectID,empName,weekend?order?by?weekend
試試行不行。這個有可能不是按周一到周日順序排,weekend是字符串,你百度一下mysql字符串怎么比較大小。