重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
取值為0~6,對應星期一到星期日,每周以星期一為第一天
十多年的霍林郭勒網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網營銷推廣的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整霍林郭勒建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。創新互聯從事“霍林郭勒網站設計”,“霍林郭勒網站推廣”以來,每個客戶項目都認真落實執行。
取值為1~7,對應星期日到星期六,每周以星期日為第一天
取值為Sunday~Saturday,對應星期日到星期六,第一天是星期日;
該函數與參數lc_time_names有關,如果設置此參數值為"zh_CN",則得到對應的中文名稱“星期日”~“星期六”
示例:
2017-01-02是星期一,使用這三個函數分別得到的是0,2,Monday
修改lc_time_names參數后,得到中文名稱:
該函數用于獲取日期是年度中的第幾周。該函數比較復雜,使用不同的mode,得到不同的結果。見下表:
例如,mode值為1,則每周的第一天為周一,week()函數的結果為0~53,如果第一個周天數少于4,則記為第0周,如果第一個周天數大于等于4,則記為第1周。
再如,mode值為2,則每周第一天為周日,week()函數的結果為1~53,如果第一個周里包含了周日,則記為第1周,如果第一個周里沒有周日,則記為上一年度的最后一周。
實際上,這個參數主要是為了解決跨年的周該如何歸屬的問題,是算作本年度的第一周,還是上一年度的最后一周,又或者是算作第0周。這需要根據使用場景和習慣來選擇。
但不管怎么歸屬,week函數本身的取值范圍有限,所以再跨年的時間區間一般不用此函數(后邊舉例說明)。
參考:
假設我們有一張銷售表,內容如下:
現在,我們要統計每周的銷售額。
首先想到的是用week函數,計算日期對應的周數,然后按照這個周數來進行分組求和:
如果能保證這個日期區間是在一個年度內的,那么用week函數完全沒有問題。
很不幸的是,通常日期區間是跨年的,例如我們這個示例中的數據,恰好有跨年的周,2010-12-31日是第52周,2011-01-01變成了2011年度的第0周,而實際上這兩天是在同一周。
要解決這個問題,我們不能指望week函數,因為該函數的返回結果總是在0~53循環,我們需要找一個固定時間為第一周,之后的周數累加而非循環。
例如,我們選擇2010-01-03為第一周的第一天,之后的任意一天201x-xx-xx距離2010-01-03的天數/7記為周數,得到結果如下:
以上解決方案中,我們選擇2010-01-03為起始日期,因為它離我們要統計的時間足夠遠,同時它是星期日(我們認為周日是一周的第一天)。
如果我們需要把星期一當作第一天,只需要改為2010-01-04即可。
mysql有豐富的時間函數:
ADDTIME (date2 ,time_interval ) //將time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉換時區
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 ) //秒數轉成時間
STR_TO_DATE (string ,format ) //字串轉成時間,以format格式顯示
TIMEDIFF (datetime1 ,datetime2 ) //兩個時間差
TIME_TO_SEC (time ) //時間轉秒數]
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) //開平方
為了連接服務器,當你調用mysql時,你通常將需要提供一個MySQL用戶名和很可能,一個口令。如果服務器運行在不是你登錄的一臺機器上,你也將需要指定主機名。聯系你的管理員以找出你應該使用什么連接參數進行連接(即,那個主機,用戶名字和使用的口令)。一旦你知道正確的參數,你應該能象這樣連接:
shell mysql -h host -u user -p
Enter password: ********
********代表你的口令;當mysql顯示Enter password:提示時輸入它。
如果能工作,你應該看見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”(匿名)用戶連接在本地主機上運行的服務器。如果在你的機器是這種情況,你應該能通過沒有任何選項地調用mysql與該服務器連接:
shell mysql
在你成功地連接后,你可以在mysql提示下打入QUIT隨時斷開:
mysql QUIT
Bye
你也可以鍵入control-D斷開。
在下列章節的大多數例子都假設你連接到服務器。由mysql提示指明他們。
select,projectID?empName,weekend?from?table?group?by?projectID,empName,weekend?order?by?weekend
試試行不行。這個有可能不是按周一到周日順序排,weekend是字符串,你百度一下mysql字符串怎么比較大小。