一、相同点
1
.使用
'YYYY-MM-DD HH:MM:SS'
或
'YY-MM-DD HH:MM:SS'
字符串格式赋值,如:
'2018-05-22 11:30:45'
'2018^05^22 11+30+45'
'2018/05/22 11*30*45'
'2018@05@22 11^30^45'
都是合法的;
date和time间可以用字母T分隔,如:
'2018-05-22 11:30:45'
'2018-05-22
T
11:30:45'
是相同的;
2.使用
'YYYYMMDDHHMMSS'
或
'YYMMDDHHMMSS'
字符串格式赋值
,
如:
'20180522113028'
'180522113028'
都是合法的;
3
.使用
YYYYMMDDHHMMSS
或
YYMMDDHHMMS
数字格式赋值,如:
20180522113045
180522113045
都是合法的;
4
.使用3.中数字格式时,长度必须是6,8,12或14。
当长度为8时被识别为:
YYYYMMDD
当长度为14时被识别为:
YYYYMMDDHHMMSS
当长度为6时被识别为:
YYMMDD
当长度为12时被识别为:
YYMMDDHHMMSS
5
.使用
YY开头的格式时:年份在
70-99 只会被识别为
1970-1999
年份在
00-69 只会被识别为
2000-2069
6
.
都可以保留6
位小数;
7.
日期、月份和时间位数不是必须为两位数
'2018-5-22 1:2:3'
'2018-05-22 01:02:03'
两者是相同的;
8.
都可以自动被初始化或更新为当前时间,在定义表时设置字段默认值:
初始化时获取:
CURRENT_TIMESTAMP,一般用户create_time字段
更新时获取:
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,一般用于update_time字段
二、
不同点
1.
范围:
DATETIME: form '1000-01-01 00:00:00' to '9999-12-31 23:59:59'
TIMESTAMP: from '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
带小数范围:
DATETIME: form '1000-01-01 00:00:00.000000'
to
'9999-12-31 23:59:59.999999'
TIMESTAMP: from '1970-01-01 00:00:01.000000' to
'2038-01-19 03:14:07.999999'
2.
DATETIME是由
TIMESTAMP的语法生成的;
3.MySQL会将时间
从当前时区转换为UTC存储,读取时再将其从UTC转换为当前时区;而
DATETIME
不会;
三、其他
1.本文针对MySQL 5.6分析
https://dev.mysql.com/doc/refman/5.6/en/datetime.html
Copyright © 2018 Ansel. All rights reserved.