MySql中關於日期的類型有Date/Datetime/Timestamp三種類型。sql
日期賦值時,容許「不嚴格」語法:任何標點符均可以用作日期部分或時間部分之間的間割符。例如,'98-12-31 11:30:45'、'98.12.31 11+30+45'、'98/12/31 11*30*45'和'98@12@31 11^30^45'是等價的,對於不合法的將會轉換爲:0000-00-00 00:00:00安全
此類型的字段,存儲數據格式爲:YYYY-MM-DD,它支持的範圍爲'1000-01-01'到'9999-12-31',而且容許使用字符串或數字爲此列複製。服務器
例如,日期格式的字段crt_date,經過字符串和數字複製後的結果以下:函數
update sys_tables set crt_date = 12331212 where table_name = 'sys_dict'; update sys_tables set crt_date = '1233-12-12' where table_name = 'sys_dict_item';
日期和時間的組合,存儲格式爲:YYYY-MM-DD HH:MM:SS,它支持的範圍爲'1000-01-01 00:00:00'到'9999-12-31 23:59:59',而且容許使用字符串或數字進行分配值。編碼
例如:spa
update sys_tables set crt_date = 12331212121212 where table_name = 'sys_dict'; update sys_tables set crt_date = '1233-12-12 12:12:12' where table_name = 'sys_dict_item';
這是時間戳,從1970-01-01 00:00:00到當前的時間差值(注意:當你在Java中輸出[new Date(0)] 的時候,輸出的是:Thu Jan 01 08:00:00 CST 1970,這是由於時區的概念,中國是東八區,因此對應的是早上八點),它精確到毫秒級別,範圍爲:1970-01-01 00:00:00 到 2037年(參考2038年問題),當值大於2037年就會拋出: [Error Code: 1292, SQL State: 22001] Data truncation: Incorrect datetime value: '20381212121212' for column 'crt_date' at row 1。設置值時只容許設置數字類型的值。code
在爲TimeStamp類型字段賦值的時候,值必須大於19700101000000,不然就會拋出: [Error Code: 1292, SQL State: 22001] Data truncation: Incorrect datetime value: '10831212121212' for column 'crt_date' at row 1。blog
例如:事件
update sys_tables set crt_date = 20081212121212 where table_name = 'sys_dict';
MySQL中時間類型用Time表示。字符串
MySQL以'HH:MM:SS'格式檢索和顯示TIME值(或對於大的小時值採用'HHH:MM:SS'格式)。TIME值的範圍能夠從'-838:59:59'到'838:59:59'。小時部分會所以大的緣由是TIME類型不只能夠用於表示一天的時間(必須小於24小時),還可能爲某個事件過去的時間或兩個事件之間的時間間隔(能夠大於24小時,或者甚至爲負)。
格式說明:
MySQL中用year表示年類型
MySQL以YYYY格式檢索和顯示YEAR值。範圍是1901到2155。
能夠指定各類格式的YEAR值: