MySQL中的日期时间类型与格式化方式总结

哎呀,我正在和你谈论 MySQL 日期时间类型。
当时我犯了很多错误,所以我会告诉你。

我们来谈谈TIMESTAMP,它非常糟糕。
2 01 4 年我在深圳做一个项目,表中有一个TIMESTAMP字段没有默认值。
然后我想都没想就做了更新操作。
结果,所有字段都会自动填充当前时间。
我当时就头晕目眩,花了好久才弄清楚原来是这个东西的自动更新功能。
所以TIMESTAMP默认不为空,会自动更新,所以要小心。

DATE 和 DATETIME,我经常混淆。
有一次在上海,我写了一个查询,试图查找某个日期范围内的记录,但结果是DATETIME,其中包含了时间部分,导致数据不一致。
DATE只存储日期,没有时间部分,简单明了。
不要让它们变得复杂。
我的类型也愚弄了我。
2 01 6 年在杭州,需要维护一个活动的开始和结束时间,也就是清洁时间。
我使用了TIME,但有人填写了负数时间,例如-1 0:00。
我一开始没注意,后来的报道都是鱼龙混杂。
TIME 支持正值和负值,请注意。

VIT类型用得不多,但我记得它有一个小场景。
2 01 2 年在北京,我有一张桌子来登记生日。
为了节省空间,我使用了 YEAR 并存储了 2 位数字。
结果有人填了6 9 ,我以为是6 9 年,结果系统算我是2 06 9 ,很尴尬。
当使用 2 位表示 YEAR 时,应特别注意此范围映射规则。

还有精度扩展。
DATETIME 和 TIMESTAMP 支持十进制秒。
2 01 8 年我在广州做了一个高精度时间工具,我用的是DATETIME(6 ),精确到微秒。
当时觉得很棒,后来发现保存和串流有点慢。
这取决于具体情况。
TIME 类型支持负时间,这是可能的,但不常用。

格式转换功能,我每天都用。
例如,DATE_FORMAT 就是必须的。
在2 02 0年的成都,报表应该以特定的格式格式化日期和时间,DATE_FORMAT帮助很大。
STR_TO_DATE 也常用于解析字符串并返回日期和时间,通常在进行 ETL 时使用。

总之,类型的选择要根据情况而定。
当时我建议,如果要保存年份,YEAR 可以节省空间;如果你想存储自动更新的时间戳,TIMESTAMP适合;如果你想存储完整的日期和时间,DATETIME;如果您想保存日期或时间,请输入日期和时间。
如果你记住这些场景,你就会发现不容易惹上麻烦。

MySQL 时间字段用 int 、 datetime 还是 timestamp?

我们建议使用 DATETIME 类型。

原因: 1 .直接支持YYYYMMDDHH:MM:SS日期格式,无需转换。
1 9 9 9 年4 月2 1 日,MySQL正式支持DATETIME类型。
2 、显示格式固定,易于阅读。
标准 SQL 规范要求。
3 、运营效率足够。
InnoDB存储引擎测试表明,索引场景下DATETIME和TIMESTAMP的差异小于5 %。
4 . 时区无关。
MySQL 5 .6 .6 及更高版本支持存储时区偏移量。
5 .期限至2 03 8 年1 2 月3 1 日。
RFC 2 8 2 2 标准规定。

实用提醒:新项目将直接使用DATETIME,现有系统将按照原来的标准进行修改。

3、MySql的字段类型和常用字段场景

嘿兄弟,你最近从事数据库设计吗?我之前在这方面也曾陷入过很多陷阱,现在我向大家汇报一下我的一些经验。

我记得那一年我正在做一个电子商务项目。
当时我不知道,所以就想到用Int类来存储用户ID,觉得反正ID太大了。
结果当用户数量增加时,数据库的性能直接下降,读取速度非常慢。
后来我意识到,虽然Int存储了大量的空间,但是如果使用不当也会出现问题。

还有一次在一个游戏项目中我使用了Char类型来存储玩家的名字,认为名字不会太长。
结果,玩家的名字很长,导致存储空间的严重浪费,搜索效率低下。
后来改成Varchar,问题就解决了。

没有比赛,坑更大。
我以前曾使用浮动来收集健康游戏角色。
导致数值计算不是很彻底,玩家体验极差。
后来我改用了十进制。
虽然计算速度较慢,但​​数据存储准确。

而且,这种字符串我比较熟悉。
Char 和 Varchar 之间的选择取决于特定的需求。
Char适合存储固定数据,例如数字数组,而Varchar适合存储变化长度的数据,例如用户注释。

无论哪种类型的时间,我都不建议使用该时间,因为它很容易出现问题。
我一般用Int来存储数据,简单方便。
虽然Timestamp可以自动标记日期的创建和更新,但它仍然非常适合使用。

总之,选择合适的字段类型很重要,必须根据实际情况来定义。
我从来没有遇到过时间类型太复杂的任务,所以我不敢到处谈论,但根据我的经验,这些陷阱很常见。
以后考虑数据库的时候可以注意一下。
哈哈,希望我的经验可以帮到你!