MySQL中Date,DateTime,TimeStamp和Time的解释和区别
admin
2024-03-29 17:47:36

以下场景应用及后台取值 用到com.alibaba.fastjson.annotation(fastjson 阿里巴巴开源框架)以及springBoot注解

Date

名称解释
显示格式YYYY-MM-DD
显示范围1901-01-01 到 9999-01-01
应用场景当业务需求中只需要精确到天时,可以用这个时间格式
后台取值@JSONField(format=“yyyy-MM-dd”)


DateTime

名称解释
显示格式YYYY-MM-DD HH:mm:ss
显示范围1601-01-01 00:00:00 到 9999-12-31 23:59:59
应用场景当业务需求中需要精确到秒时,可以用这个时间格式
后台取值@JSONField(format=“yyyy-MM-dd HH:mm:ss”)


TimeStamp

名称解释
显示格式YYYY-MM-DD HH:mm:ss
显示范围1601-01-01 00:00:00 到 9999-12-31 23:59:59
应用场景当业务需求中需要精确到秒或者毫秒时,或者该系统用于不同时区,可以用这个时间格式
 
后台取值@JSONField(format=“yyyy-MM-dd HH:mm:ss:SSS”)(这里只会精确到秒)


Time

名称解释
显示格式HH:mm:ss
显示范围00:00:00 到 23:59:59
应用场景当业务需求中只需要每天的时间,可以用这个时间格式
后台取值@JSONField(format=“HH:mm”)(这里是只精确到分,数据库存的也就是只精确到分,比如 09:36:00,如果需要精确到秒。需要使用@JSONField(format=“HH:mm:ss”))


Date,DateTime,TimeStamp和Time 比较

从 显示格式、显示范围、应用场景 和 后台取值的去进行比较


DateTime和TimeStamp都是年月日时分秒,为什么还有这两个类型呢?

  1. 精度:DateTime和TimeStamp都可以精确到毫秒(我目前使用的5.5的mysql,所以只能精确到秒,据说高版本的可以用TIMESTAMP(3)与 DATETIME(3)精确到毫秒。),但是用的很少,一般精确到毫秒都是用Timestamp,另外关于Timestamp的10位和13位的区别请参考我的另一篇文章java时间戳 10位和13位分别是怎么来的?
  2. DateTime和TimeStamp最大的区别只是用的场景不同,如果你的应用 是用于不同时区(就是国内和国外同时使用),这时候如果用dateTime就会出现各种各样的问题,但是如果使用TimeStamp就不会出现这种时差的问题。
  3. 误区:之前我也也为datetime和TimeStamp是一样的,因为他们在数据库存的时间都是YYYY-MM-DD HH:mm:ss格式的,但是TimeStamp类型存的是10位或者13位的时间戳,不要被表现骗了,使用如下的SQL即可获取时间戳里面具体存的什么
    select UNIX_TIMESTAMP(TIME) date from table

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...