mysql的時間、日期型
mysql中表示時間值的有date、時間型別為datetime、date、timestamp、time和year。每個時間型別有乙個有效值範圍和乙個「零」值,當指定不合法的mysql不能表示的值時使用「零」值。
如果在資料表中插入乙個不合法的日期,那麼mysql將給出警告或提示mysql語法錯誤。不過可以使用allow_invalid_dates sql模式讓mysql接受某些日期,例如'1999-11-31'。
建立資料表,測試時間資料型別:
create table `date_test`(
`date_year` year, -- 格式:yyyy 或yy
`date_date` date, -- 格式:yyyy-mm-dd
`date_time` time, -- 格式:hh:mm:ss
`date_datetime` datetime,
-- 格式:yyyy-mm-dd空格hh:mm:ss
`date_timestamp` timestamp
-- 格式:yyyy-mm-dd空格hh:mm:ss
)charset utf8 comment '測試時間資料表';
當你想要儲存乙個「可能錯誤的」使用者已經在資料庫中指定(例如,以web形式)用於將來處理的值時很有用。在這種模式下,mysql只驗證月範圍為從0到12,日範圍為從0到31。這些範圍可以包括零,因為mysql允許在date或datetime列儲存日/月和日是零的日期。這在應用程式需要儲存乙個你不知道確切日期的生日時非常有用。在這種情況下,只需要將日期儲存為'1999-00-00'或'1999-01-00'。
-- 插入資料測試:
insert into `date_test` values
-- 時間日期型資料:錄入的時候,都要加上引號
('2018', -- year型別
'2018-9-26', -- date型別
'19:18:29', -- time型別
'2018-9-26 10:15:16', -- datetime型別
'2018-9-26 10:15:16' -- timestamp型別
注意如果儲存此類日期,date_sub()或date_add等需要完整日期的函式不會得到正確的結果。(如果你不想在日期**現零,可以使用no_zero_in_date sql模式)。
'yyyy-mm-dd hh:mm:ss'或'yy-mm-dd hh:mm:ss'格式的字串。允許「不嚴格」語法:任何標點符都可以用做日期部分或時間部分之間的間割符。例如,'98-12-31 11:30:45'、'98.12.31 11+30+45'、'98/12/31 11*30*45'和'98@12@31 11^30^45'是等價的。
insert into `date_test` values
-- 時間日期型資料:錄入的時候,都要加上引號
('09', -- year型別
'2018-9-26', -- date型別
'-3 19:18:29', -- time型別
'2018-9-26 10:15:16', -- datetime型別
'2018-9-26 10:15:16' -- timestamp型別
'yyyy-mm-dd'或'yy-mm-dd'格式的字串。這裡也允許使用「不嚴格的」語法。例如,'98-12-31'、'98.12.31'、'98/12/31'和'98@12@31'是等價的。
insert into `date_test` values
-- 時間日期型資料:錄入的時候,都要加上引號
('69', -- year型別
'2018-9-26', -- date型別
'-3 19:18:29', -- time型別
'2018-9-26 10:15:16', -- datetime型別
'2018-9-26 10:15:16' -- timestamp型別
'yyyymmddhhmmss'或'yymmddhhmmss'格式的沒有間割符的字串,假定字串對於日期型別是有意義的。例如,'19970523091528'和'970523091528'被解釋為'1997-05-23 09:15:28',但'971122129015'是不合法的(它有乙個沒有意義的分鐘部分),將變為'0000-00-00 00:00:00'。
'yyyymmdd'或'yymmdd'格式的沒有間割符的字串,假定字串對於日期型別是有意義的。例如,'19970523'和'970523'被解釋為 '1997-05-23',但'971332'是不合法的(它有乙個沒有意義的月和日部分),將變為'0000-00-00'。
yyyymmddhhmmss或yymmddhhmmss格式的數字,假定數字對於日期型別是有意義的。例如,19830905132800和830905132800被解釋為 '1983-09-05 13:28:00'。
yyyymmdd或yymmdd格式的數字,假定數字對於日期型別是有意義的。例如,19830905和830905被解釋為'1983-09-05'。
-- mysql8.0 將timestamp型別,自動跟隨更新預設不更新
-- 更改為:自動跟隨更新:
alter table date_test
modify -- 更新表資料型別
date_timestamp -- 列名
timestamp -- 新資料型別
default current_timestamp -- 預設值
on update current_timestamp -- 跟隨更新
· 函式返回的結果,其值適合datetime、date或者timestamp上下文,例如now()或current_date。mysql不接受在日或月列包括乙個零或包含非法日期值的時間戳值。該規則的唯一例外是特殊值'0000-00-00 00:00:00'。你可以非常靈便地確定什麼時候初始化和更新timestamp和對哪些列進行初始化和更新
MySql日期時間
mysql獲取當前日期及日期格式 獲取系統日期 now 格式化日期 date format date,format 注 date 時間字段 string format 日期格式 string create table datetest03 id int auto increment not null...
MySQL 日期時間
now 函式以 yyyy mm dd hh mm ss 返回當前的日期時間,可以直接存到datetime欄位中。curdate 以 yyyy mm dd 的格式返回今天的日期,可以直接存到date欄位中。curtime 以 hh mm ss 的格式返回當前的時間,可以直接存到time欄位中。取得當前...
MySql 日期時間
mysql 日期時間 1 查詢條件 2 常用函式 有 datetime 型別字段 publish time 1 查詢條件 庫中儲存 2004 02 04 格式 where date publish time 2004 02 04 庫中儲存 08 08 08 格式 where date publish...