PHP與MySQL 入門學習指南 凱文瑞克 著 第 31 章 日期時間資料
日期相關的資料型態 日期與時間的資料型態 資料型態 標準格式 空值格式(填入0) DATETIME YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00 DATE YYYY-MM-DD 0000-00-00 TIME HH:MM:SS 00:00:00 YEAR YYYY 0000 TIMESAMP 變數(最長值之數值) 0 0 0 0 0 0 0 0 0 0 0 0 0 0
DATETIME 欄位資料型態 這種欄位保存了完整的日期與時間, 精確度可至秒, 資料允許範圍從「1000-01-01 00:00:00」到「9999-12-31 23:59:59」。
DATE 欄位資料型態 DATE 紀錄特定日期, 但是沒有儲存時間的資訊, 此資料型態符合 Y2K 測試, 其資料範圍從「1000-01-01」到「9999-12-31」
TIME 欄位資料型態 和 DATE 欄位資料型態正好相反, 它紀錄的是特定時間。它可紀錄的時間範圍不僅是從「00:00:00」到「23:59:59」, 事實上, 是從「-838:59:59」到「838:59:59」, 如此不僅只是可利用來紀錄一般的時間, 也可以用來紀錄兩個特定事件之間的時間差。 上面這些欄位資料型態的輸入方式都很有彈性, 資料分隔字元可以使用「-」, 或省略前置的 0, 例如「04.22.10」可寫成「4.22.10」。也可用沒有任何分隔字元的輸入方式, 例如「042210」或是「42210」, 但是使用這種方式時要小心, MySQL 是由右至左依序判別時間, 如「4:22」或「0422」都會被當作「00:04:22」, 而不是「04:22:00」。
YEAR 欄位資料型態 YEAR 欄位資料型態是用來紀錄年份, 它的資料長度為 1 byte, 其資料允許範圍為 1901 至 2155, 其數值表示為二位數或是四位數。二位數的範圍可存入 1 到 99 (數字 1 到 99 或是字串 '00' 到 '99'), 特別的是若數值介於 1 到 69 之間(或是0到69), 代表的是 2001 年到 2069 年 (或是 2000 年到 2069 年)。
TIMESTAMP 欄位資料型態(1) TIMESTAMP 欄位資料型態是個相當好用的型態, 它所紀錄的是該筆資料存入或更新時的時間, 可以很方便的用來紀錄資料最近更新的時間, 而不必每次需要另行處理時間後再存入。TIMESTAMP 只能處理介於 1970 到 2037 年之間的資料, 其可精確至秒, 下表為其所提供的格式。
TIMESTAMP 欄位資料型態(2) 資料型態 顯示格式 TIMESTAMP(14) YYYYMMDDHHMMSS
MySQL 的日期函數(1) [DAYOFWEEK(date)] [WEEKDAY(date)] [DAYOFMONTH(date)] [DAYOFYEAR(date)] [MONTH(date)] [DAYNAME(date)] [MONTHNAME(date)]
MySQL 的日期函數(2) [QUARTER(date)] [WEEK(date) 或 WEEK(date,first)] [YEAR(date)] [HOUR(time)] [MINUTE(time)] [SECOND(time)] [PERIOD_ADD(P,N)] [PERIOD_DIFF(P1,P2)]
MySQL 的日期函數(3) [DATE_ADD(date,INTERVAL expr type)] [DATE_SUB(date,INTERVAL expr type)] [ADDDATE(date,INTERVAL expr type)] [SUBDATE(date,INTERVAL expr type)]
MySQL 的日期函數(4) 意義 秒 分鐘 時間 天 月 年 分鐘和秒 小時和分鐘 天和小時 年和月 小時, 分鐘, 天, 小時, 分鐘 TYPE 值 意義 EXPR 格式 SECOND 秒 SECONDS MINUTE 分鐘 MINUTES HOUR 時間 HOURS DAY 天 DAYS MONTH 月 MONTHS YEAR 年 YEARS MINUTE_SECOND 分鐘和秒 "MINUTES:SECONDS" HOUR_MINUTE 小時和分鐘 "HOURS:MINUTES" DAY_HOUR 天和小時 "DAYS HOURS" YEAR_MONTH 年和月 "YEARS-MONTHS" HOUR_SECOND 小時, 分鐘, "HOURS:MINUTES:SECONDS" DAY_MINUTE 天, 小時, 分鐘 "DAYS HOURS:MINUTES" DAY_SECOND 天, 小時, 分鐘, 秒 "DAYS HOURS:MINUTES:SECONDS"
MySQL 的日期函數(5) [TO_DAYS(date)] [FROM_DAYS(N)] [DATE_FORMAT(date,format)] 修飾符號 參數用途 %M 月名(January……December) %W 星期名字(Sunday……Saturday) %D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。) %Y 年, 數字, 4 位 %y 年, 數字, 2 位 %a 縮寫的星期名字(Sun……Sat) %d 月份中的天數, 數字(00……31) %e 月份中的天數, 數字(0……31)
MySQL 的日期函數(6) %m 月, 數字(01……12) %c 月, 數字(1……12) %b 縮寫的月份名字(Jan……Dec) 一年中的天數(001……366) %H 小時(00……23) %k 小時(0……23) %h 小時(01……12) %I %l 小時(1……12) %i 分鐘, 數字(00……59) %r 時間,12 小時(hh:mm:ss [AP]M) %T 時間,24 小時(hh:mm:ss) %S 秒(00……59) %s %p AM或PM %w 一個星期中的天數(0=Sunday ……6=Saturday ) %U 星期(0……52), 這裡星期天是星期的第一天 %u 星期(0……52), 這裡星期一是星期的第一天 %% 一個文字“%”。
MySQL 的日期函數(7) [TIME_FORMAT(time,format)] [CURDATE( ) 或 CURRENT_DATE] [CURTIME() 或 CURRENT_TIME] [NOW() 或 SYSDATE() 或 CURRENT_TIMESTAMP] [UNIX_TIMESTAMP() 或 UNIX_TIMESTAMP(date)]
MySQL 的日期函數(8) [FROM_UNIXTIME(unix_timestamp) ] [FROM_UNIXTIME(unix_timestamp,format)] [SEC_TO_TIME(seconds)] [TIME_TO_SEC(time)]