Mysql的时间类型

mysql中有多种数据类型可以用于时间和日期的表示,不同的版本可能由不同的地方,下面这张图表示mysql5.0中所支持的日期和时间类型。

Mysql的时间类型

日期和时间类型

如果要用来表示年月日的话,那么通常用date来表示;

如果要用来表示年月日时分秒,通常用datetime来表示;

如果用来表示时分秒,通常用time来表示;

如果需要插入的时间为系统时间的话,通常使用timestamp来表示(timestamp值返回后显示为"yyyy-mm-dd hh:mm:ss"格式的字符串,显示宽度为19个字符,如果想要获得数字值,需要在timestamp列添加“+0” :select ts+'0' from ts;获得的值为20170625185917);

如果只是表示年份,可以用year来表示,它比date占用更少的空间。year有2位或4位格式的年,默认是4位格式。4位格式的时候允许的值是1901--2155。在2位格式中,允许的值是70--69,表示从1970--2069年(貌似两位的从5.5.27之后就不支持两位了)

表中的最小值和最大值代表着有效范围,如果超过了这个范围,系统会进行报错并以零值存储。下面用sql语句看下date、time、datetime三种类型的结果:

Mysql的时间类型

建表

Mysql的时间类型

插入当前时间

Mysql的时间类型

查询结果

从结果可以看到,datetime是date和time的结合体,用户可以根据不同的需求,来选择不同的日期或者时间类型。下面看下timestamp的示例:

Mysql的时间类型

字段为timestamp

从表结构可以看到,系统默认为字段类型为timestamp创建了默认值CURRENT_TIMESTAMP(系统的当前时间),我们来插入一个null值试试会不会自动给我们插入时间呢?

Mysql的时间类型

自动获取时间

可以从结果看到已经插入了系统时间。但是设置timestamp的时候需要注意,mysql只会给第一个字段类型为timestamp的设置系统日期,如果再设置第二个timestamp的话,那么系统默认插入的时间为0.

Mysql的时间类型

插入第二个timestamp

当然可能大家会看到我们在添加第二个的时候并没有设置默认值。因为在mysql中只能由一列的默认值为timestamp,如果想要修改多列为系统时间默认值的话,那么就会报错。

Mysql的时间类型

修改第二个默认值报错

今天就到这里~~未完待续~~~

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: