当前位置:网站首页>数据库中的日期时间类型
数据库中的日期时间类型
2022-04-23 12:46:00 【兴趣使然的小小】
前言:
大家好, 这里是小小! 今天, 实验室的一个学长发现我提交的一次代码有问题! 差点以为要被特殊关心, 好了说正事了!
看到数据库中时间日期类型, 很多人就会说了哈, 直接存字符串String类型呀!简单点~emm
最开始我也是这么想的, 然后被驳回了!
字符串存储日期
把日期和时间当做一个字符串进行存储,进而将日期和时间拆分成两个字段,一个字段记录日期(如yyyy-MM-dd),另外一个字段存储时间(如:HH:mm:ss)的形式。此种方式就不多说,除非极个别的场景,不建议使用。当使用此种方式进行处理日期,不仅性能有问题,比较、处理、取范围等都是麻烦事。之所以提出这种方式,也是提醒大家,如果你的数据库日期字段还在用字符串存储,需要慎重考虑一下了。
比如:
前端展示日期 我假设现在是yyyyMMdd hh:mm:ss
那前端现在改成了MMddyyyy 那该怎么办呢?
碰到时区问题该怎么办呢?
雀氏 如果就存一个字符串的话! 很难进行改变!
所以就会使用下面这个字符串:
DateTime类型
DateTime类型存储的值既有日期又有时间。我们直观看到的格式为:yyyy-MM-dd HH:mm:ss。它支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。
但DateTime中并未存储时区信息,只存储了本地时间。也就是说:如果你将服务器的时区进行修改,数据库中记录的日期和时间并不会对应的变化。
那么,读出的数据与新存储的数据便是不一致的,也可以说是错误的。
通常,针对此种情况,如果涉及到跨时区问题,可考虑单独用一个字段来存储时区。
有时候还会使用:
Timestamp类型
Timestamp类型:也是既有日期又有时间的数据。存储和显示的格式跟Datetime一样。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。
Timestamp类型不仅存储了日期和时间,还存储了时区信息。如果以Timestamp类型存储,各数据库的实现会有所不相同,有的进行了内部时区自动转换。
如果应用服务器的时区和数据库服务器的时区不一致,你无法确定数据库驱动程序会不会自动帮你转换。
同时,时间范围是Timestamp硬伤。
TIMESTAMP(14) | YYYYMMDDHHMMSS |
TIMESTAMP(12) | YYMMDDHHMMSS |
TIMESTAMP(10) | YYMMDDHHMM |
TIMESTAMP(8) | YYYYMMDD |
TIMESTAMP(6) | YYMMDD |
TIMESTAMP(4) | YYMM |
TIMESTAMP(2) | YY |
Unix timestamp
由于时区问题,地球上不同地方的人看到太阳升起的时间是不一样的。比如欧洲和北京时差有6-7个小时,当早上8点在北京看到太阳时,欧洲还处于凌晨1-2点。
除了上面所说的通过Timestamp类型存储包含时区的日期和时间外,还可以通过“绝对时间”来进行计算,单位为秒。
在计算机中,当前时间是指从一个基准时间(1970-1-1 00:00:00 +0:00)到现在的秒数,用一个整数表示。
有一个很神奇的东西, 就是2038年问题
为了调研数据库日期和时间的设置,也参考了阿里的开发手册,令人疑惑的是阿里使用的竟然是datetime类型。
的确如此,毕竟每个公司的业务范围不同,使用场景也不同。优秀的理念可以参考,但不能照搬。就好比本篇文章,介绍了不同类型的日期和时间存储,而根据你的业务场景选择最适合的那便是最好的。我这里最终决定用绝对时间戳来进行处理。
版权声明
本文为[兴趣使然的小小]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_51705526/article/details/124334304
边栏推荐
猜你喜欢
Deploying MySQL in cloud native kubesphere
在线计算过往日期天数,计算活了多少天
Aviation core technology sharing | overview of safety characteristics of acm32 MCU
Fashion cloud learning - input attribute summary
Plato Farm-以柏拉图为目标的农场元宇宙游戏
[csnote] ER diagram
A graphic designer's fantasy world | ones characters
免费试用一个月的服务器,并附上教程
SSM framework series - annotation development day2-2
A graphic designer's fantasy world | ones characters
随机推荐
Hard core parsing promise object (do you know these seven common APIs and seven key questions?)
leetcode-791. 自定义字符串排序
Remote sensing image classification and recognition system based on convolutional neural network
Web17——EL与JSTL的使用
21 days learning mongodb notes
Introduction to metalama 4 Use fabric to manipulate items or namespaces
Qt重绘事件与剪切
STM32 control stepper motor (ULN2003 + 28byj)
[unity note] basic lighting in l4unity
QT draw image
XinChaCha Trust SSL Organization Validated
Jiachen chapter Genesis "inner universe" joint Edition
洛谷P5540 [BalkanOI2011] timeismoney | 最小乘积生成树 题解
Zero trust in network information security
SynchronousQueue 源码解析
QT redraw events and cuts
Kubernetes 入門教程
21 天学习MongoDB笔记
NPDP|产品经理如何做到不会被程序员排斥?
ZigBee CC2530 minimum system and register configuration (1)