mysql 时间格式比较_mysql 日期类型 比较

datetime 显示为'YYYY-MM-DD HH:MM:SS'格式,范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'

date 显示为'YYYY-MM-DD'格式,范围为'1001-01-01'到'9999-12-31'

timestamp 范围从'1970-01-01 00:00:01'UTC 到'2038-01-09 03:14:07'UTC

MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。

日期类型 存储空间 日期格式 日期范围

datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038

date 3 bytes YYYY-MM-DD 1000-01-01 ~ 9999-12-31

year 1 bytes YYYY 1901 ~ 2155

datetime和timestamp比较

datetime和timestamp 相同点:

显示格式相同,TIMESTAMP列的显示格式与DATETIME列相同。换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS。

datetime和timestamp不同点:

1)范围

datetime 以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'TIMESTAMP值不能早于1970或晚于2037.

2)储存

TIMESTAMP

1.4个字节储存(Time stamp value is stored in 4 bytes)

2.值以UTC格式保存( it stores the number of milliseconds)

3.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

datetime

1.8个字节储存(8 bytes storage)

2.实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)

3.与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)

在一个表里面的timestamp字段只能有下面4种定义:

1). 是default current_timestamp

插入时系统自动赋值,插入时若在SQL 语句中指定该字段的值,则用SQL语句中的指定值。

修改时时间值不自动改变,但可以在SQL语句中指定其值。

2). 是on update current_timestamp

插入时系统不自动赋值(字段为“零”值),但可以在SQL语句中指定该字段的值。

修改时,系统自动赋值,但若SQL语句中指定其值,则用SQL语句中的指定值。

3).两个都有default current_timestamp on update current_timestamp

如果timestamp后面啥都不写,也相当于2个都有。

插入修改时系统自动赋值,SQL语句中若指定,则用SQL语句中的指定值。

4).如果default 后面写个常数,如default 20090101010000,那么插入时即为这个值。其他与上面类似。

另外,一个表里面,如果想定义第2个timestamp字段,而且想让第2个字段有系统自动修改的机制,那么之前的那个字段一定要赋予default 常数(即上面第4点),然后,再给这个新的timestamp字段进行如上abc的定义,区别是这个新的timestamp字段不能后面啥不都写,如果啥都不写,那么插入和修改时系统不会自动赋值。依次类推,再想定义第3个timestamp字段,而且想让第3个字段有系统自动修改的机制,那么之前第2个timestamp字段一定要赋予default 常数(即上面第4点),然后,再给这个新的timestamp字段进行如上abc的定义,区别跟前面一样。

上述current_timestamp还可以用它的同义词 current_timestamp(),now(),localtime,localtime(),localtimestamp,localtimestamp() 代替。

timestamp字段缺省不允许空值,如果指定它的值为null,实际上就是用当前时间值赋给他了。

但是,可以这样定义:

col1 timestamp null default null, 注释:该字段可以为null,插入时缺省就是null,如果赋值null,那也真是null而不是当前时间值。

col2 timestamp null default 0, 注释:该字段可以null,插入时缺省为0,如果赋值null,那也真是null而不是当前时间值。

如果MySQL服务器以MAXDB SQL模式运行,那么timestamp等同于datetime类型,前面说的timestamp类型的所有描述都消失。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值