MySql 5.0中所支持的日期和时间类型
日期和时间类型 | 字节 | 最小值 | 最大值 |
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | 4 | 19700101080001 | 2038年的某个时刻 |
TIME | 3 | -838:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
系统自动创建了默认值CURRENT_TIMESTAMP(系统日期)。插入一个NULL值试试,
注意:MySql只给表中的第一个TIMESTAMP字段设置默认值为系统日期,如果有第二个TIMESTAMP类型,则默认值设置为0值,测试如下:
修改表中时区:
TIMESTAMP和DATETIME的表示方法非常相似,区别主要有以下几点:
1. TIMESTAMP支持的时间范围较小,其取值范围从19700101080001到2038年的某个时间,而DATETIME是从1000-01-01 00:00:00到9999-12-31 23:59:59,范围更大。
2. 表中的第一个TIMESTAMP列自动设置为系统时间。如果在一个TIMESTAMP列中插入NULL,则该列值将自动设置为当前的日期和时间。在插入或更新一行但不明确给TIMESTAMP列赋值时也会自动设置该列的值为当前的日期和时间,当插入的值超出取值范围时,MYSQL认为该值溢出,使用“0000-00-00 00:00:00”进行填补。
3. TIMESTAMP的插入和查询都受当地时区的影响,更能反映出实际的日期。而DATETIME则只能反映出插入时当地的时区,其他时区的人查看数据必然会有误差的。
4. TIMESTAMP的属性受MYSQL版本和服务器SQLMode的影响很大,这里是以MYSQL 5.0为例做的笔记。
MYSQL以YYYY格式检索和显示YEAR值,范围是1901~2155。当使用两位字符窜表示年份时,其范围为“00”到“99”。
“00”到“69”范围的值被转换为2000~2069范围的YEAR值
“70”到“99”范围的值被转换为1970~1999范围的YEAR值
日期类型的插入格式:
YYYY-MM-DD HH:MM:SS或YY-MM-DD HH:MM:SS格式的字符串。允许“不严格”语法:任何标点符都可以用作日期部分或时间部分之间的间隔符。
YYYYMMDDHHMMSS或YYMMDDHHMMSS格式的没有间隔符的字符串,假定字符串对于日期类型是有意义的。
YYYYMMDDHHMMSS或YYMMDDHHMMSS格式的数字,假定数字对于日期类型是有意义的。
函数返回的结果,其值适合DATETIME,DATE或者TIMESTAMP上下文,例如,NOW()或CURRENT_DATE。
联系客服