数据库time类型存储

1. mongo

mongo ISODate是一种存储时间的object,它支持到毫秒精度,如果要存储到纳秒精度,则最好用long存储时间戳的方式。

golang time.Time是带有时区的时间,在存到Mongo时驱动会转化为ISODate类型,ISODate类型在数据库存储为UTC时间,ISODate.toLocaleString()可以显示当前带有当前时区的字符串。

go mongo驱动读取时没有转化为当前时区,还是UTC时区存到time.Time,即time.Time.loc=nil //nil即UTC。

如果time.Time作为map的一个元素,存入mongo时,则time.Time类型转化会有问题,见:https://stackoverflow.com/questions/49657422/using-time-time-in-mongodb-record

golang time.Time的时间精度是到纳秒[0,999999999],所以如果是取的time.Now()存入mongo后再取出,与之前的变量比较即使时区一样两者也是不相等的。因为精度有损失。

2.MySQL

mysql表达时间的有: DATE, TIME, DATETIME, TIMESTAMP,和YEAR.他们对应的零值分别为:’0000-00-00’,’00:00:00’,’0000-00-00 00:00:00’,’0000-00-00 00:00:00’,0000.当存入值无效或者超出对应类型范围时,就会被设置成零值

Original: https://blog.csdn.net/yshhuan/article/details/114269672
Author: offhours365
Title: 数据库time类型存储

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/817520/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球