mysql时长用什么类型_MySQL 日期时间类型怎么选?千万不要乱用!

构建数据库写程序避免不了使用日期和时间,对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 以及使用 int 来存储 unix timestamp。

不仅新手,包括一些有经验的程序员还是比较迷茫,究竟我该用哪种类型来存储日期时间呢?

那我们就一步一步来分析他们的特点,这样我们根据自己的需求选择合适的字段类型来存储 (优点和缺点是比较出来的 , 跟父母从小喜欢拿邻居小孩子跟自己比一样的)

datetime 和 timestamp

datetime 更像日历上面的时间和你手表的时间的结合,就是指具体某个时间。

timestamp 更适合来记录时间,比如我在东八区时间现在是 2016-08-02 10:35:52, 你在日本(东九区此时时间为 2016-08-02 11:35:52),我和你在聊天,数据库记录了时间,取出来之后,对于我来说时间是 2016-08-02 10:35:52,对于日本的你来说就是 2016-08-02 11:35:52。所以就不用考虑时区的计算了。

时间范围是 timestamp 硬伤(1970-2038),当然 datetime (1000-9999)也记录不了刘备什么时候出生(161 年)。

timestamp 和 UNIX timestamp

显示直观,出问题了便于排错,比好多很长的 int 数字好看多了

int 是从 1970 年开始累加的,但是 int 支持的范围是 1901-12-13 到 2038-01-19 03:14:07,如果需要更大的范围需要设置为 bigInt。但是这个时间不包含毫秒,如果需要毫秒,还需要定义为浮点数。datetime 和 timestamp 原生自带 6 位的微秒。

timestamp 是自带时区转换的,同上面的第 2 项。

用户前端输入的时间一般都是日期类型,如果存储 int 还需要存前取后处理

总结

timestamp 记录经常变化的更新 / 创建 / 发布 / 日志时间 / 购买时间 / 登录时间 / 注册时间等,并且是近来的时间,够用,时区自动处理,比如说做海外购或者业务可能拓展到海外

datetime 记录固定时间如服务器执行计划任务时间 / 健身锻炼计划时间等,在任何时区都是需要一个固定的时间要做某个事情。超出 timestamp 的时间,如果需要时区必须记得时区处理

UNIX timestamps 使用起来并不是很方便,至于说比较取范围什么的,timestamp 和 datetime 都能干。

如果你不考虑时区,或者有自己一套的时区方案,随意了,喜欢哪个上哪个了,当然,你可以关注公众号Java技术栈回复m36获取一份MySQL开发军规。

laravel 是国际化设计的框架,为了程序员方便、符合数据库设计标准,所以 created_at updated_at 使用了 timestamp 是无可厚非的。

有没有一个时间类型即解决了范围、时区的问题?这是不可能的,不是还有 tinyInt BigInt 吗?取自己所需,并且 MySQL 是允许数据库字段变更的。

生日可以使用多个字段来存储,比如 year/month/day,这样就可以很方便的找到某天过生日的用户 (User::where(\['month' => 8, 'day' => 12\])->get())

构建项目的时候需要认真思考一下,自己的业务场景究竟用哪种更适合。选哪个?需求来定。关注公众号Java技术栈回复m36可以获取一份MySQL开发军规。

欢迎大家补充和指正。

推荐去我的博客:

觉得不错,别忘了点赞+转发哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP----练习-----新闻管理----增删改查

练习-----新闻管理 题目要求如下&#xff1a; 做法&#xff1a; 【1】建数据库 【2】封装类文件--------DBDA.class.php 1 <?php2 class DBDA3 {4 public $fuwuqi"localhost"; //服务器地址5 public $yonghuming"root";//用户名6 public …

MYSQl 连接查询

查询信息的来源如果来自多张表&#xff0c;就必须对这些表进行连接查询。连接是把不同表的记录连到一起的最普遍的方法&#xff0c;通过连接查询可将多个表作为一个表进行处理。连接查询分为内连接和外连接。交叉连接&#xff08;Cross Join&#xff09;&#xff0c;又称“笛卡…

mysql窗口函数_MySQL8.0窗口函数入门实践及总结

前言MySQL8.0之前&#xff0c;做数据排名统计等相当痛苦&#xff0c;因为没有像Oracle、SQL SERVER 、PostgreSQL等其他数据库那样的窗口函数。但随着MySQL8.0中新增了窗口函数之后&#xff0c;针对这类统计就再也不是事了&#xff0c;本文就以常用的排序实例介绍MySQL的窗口函…

MyEclipse Servers视窗出现“Could not create the view: An unexpected exception was thrown”错误解决办法...

MyEclipse 打开后有时候莫名的在server窗口里抛出“Could not create the view: An unexpected exception was thrown”错误&#xff0c;解决办法&#xff1a;打开myeclipse所在的wordspace文件夹&#xff0c;在下面子文件夹 .metadata\.plugins\org.eclipse.core.runtime\.set…

Java 入门基础

程序是为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。Java是一门面向对象编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为…

mysql query cache 关闭_为什么要关闭MySQL query cache-Fun言

MySQL的query cache大部分情况下其实只是鸡肋而已&#xff0c;建议全面禁用。当然了&#xff0c;或许在你的场景下还是挺好的&#xff0c;还能发挥作用&#xff0c;那就继续使用吧&#xff0c;把本文当做参考就好。不过&#xff0c;可能有的人人为只需要把 query_cache_size 大…

Java 基础之java运算符

运算符&#xff0c;顾名思义就是用于计算的符号。按功能分为&#xff1a;赋值运算符、算术运算符、关系运算符和逻辑运算符按操作数的个数分类&#xff1a;单目运算符、双目运算符、三目运算符运算符的目&#xff1a;运算符能连接操作数的个数称为运算符的目运算符的优先级&…

直流电机调速仿真作业

本次调速仿真采用PID调节。首先要确定PID中的各项设计参数&#xff0c;仿真过程中采用临界比例度法确定了大概的Kp值。在若干次调整的过程中&#xff0c;发现加入微分环节后调整时间略有上升&#xff0c;故采用PI调节。调整参数确定为Kp75,Ki22。控制器部分的程序如下图所示。原…

mysql any 效率_关于mysql的性能优化

1.用 show status like value 查询mysql数据库性能2. 用 EXPLAIN select * from table 或 DESCRIBE select * from table 查看执行计划3.使用索引--使用 like关键字时 like %le索引不起作用&#xff0c;但 like le%索引可以起作用-- 使用关键字or时要求两个字段必须同为索引…

存储指针

- (void)addObserver:(__weak NSObject *)observer forContext:(void *)context { NSValue *valueContext [NSValue valueWithPointer:context]; dispatch_sync(self.queue, ^{ [self.trampolines setObject:observer forKey:valueContext]; }); }转载于:https://www.cnblogs.…

Java运算符优先级和表达式及数据类型转换

计算机程序在处理数据时会进行大量的计算&#xff0c;而数据的运算则需要借助运算符和表达式来完成。表达式是指由操作数和运算符组成的用于完成某种运算功能的语句子表达式Y X * ( Z 10 ) 表达式 其中Y、X、Z、10 称为操作数&#xff0c;、*、 称为运算符。 在…

Bugtags 2016-06-16 更新内容

增加版本管理功能 随着版本的增多&#xff0c;有些历史的版本不再使用&#xff0c;可将这些版本隐藏起来。操作步骤如下&#xff1a;点击设置 - 版本管理&#xff08;管理员可见&#xff09;- 取消勾选需要隐藏的版本即可。隐藏版本后&#xff0c;版本筛选中将不会显示&#xf…

MYSQL描述选课系统的问题与_mysql+php实现选课系统中遇到的问题及解决方法

首先是一些mysql 的基本命令删除表格 drop ;约束条件 :primary key 设置为主键unique 值唯一not null 非空foreighn key(key_name) references(key_name) 设置外键 default 设置默认值auto_increment 一般用于设置编号&#xff0c;随着…

Java 基础(条件结构)

Java 程序流程控制结构 顺序结构: 条件结构: 循环结构: 单分支if结构 选择 结构又称为分支结构 。 当 程序执行到分支判断的语句时&#xff0c;首先判断条件&#xff0c;然后根据条件表达式的结果选择相应的语句执行 。 分支 结构包括单分支、双分支和多分支三种形式。 语法…

直通车运营系统优化之账户结构设置

国庆期间&#xff0c;小2哥我好好的享受了好几天的日子&#xff0c;说实话&#xff0c;自从做了淘宝&#xff0c;就很少像这期间一样好好的享受了这段日子 。做淘宝有时候真的很苦逼&#xff0c;每天的工作时间比一个打工的还长&#xff0c;熬夜到凌晨才睡也是家常便饭&#xf…

mysql批量导入数据脚本_MySQL数据库批量导入脚本

//File: query.php//描述: 数据库批量导入脚本//功能: 可进行单行和批量插入.//作者: SworDs//QQ: 78623269//日期: 2005-1-21//其他:好老了啊&#xff0c;刚学PHP写的&#xff0c;连抄带查&#xff01;2006.5.19从仓库里翻出来,。。。error_reporting(7);if ( function_exists…

原生JS封装ajax方法

http://blog.sucaijiayuan.com/article/89 jquery框架的ajax方法固然好用&#xff0c;但是假如某天我们的项目不能引入jquery或项目需求很简单&#xff0c;没有很多交互功能&#xff0c;只需要ajax&#xff0c;这时引入jquery库会造成资源浪费&#xff0c;也会显得页面臃肿。这…

mysql 从库 问题_一篇文章帮你解决Mysql 中主从库不同步的问题

写这篇文章是因为之前有一次删库操作&#xff0c;需要进行批量删除数据&#xff0c;当时没有控制好删除速度&#xff0c;导致产生了主从延迟&#xff0c;出现了一点小事故。今天我们就来看看为什么会产生主从延迟以及主从延迟如何处理等相关问题。坐好了&#xff0c;准备发车&a…

深度学习代码练习

代码下载地址&#xff1a;https://github.com/daijifeng001/R-FCN 对应论文&#xff1a;Object Detection via Region-based Fully Convolutional Networks 1、代码里面给的数据库下载链接失效&#xff0c;需要去代码下载主页最下方给定的资源区下载。 2、按照要求一步一步运行…

rabbitmq 不同的消费者消费同一个队列_消息队列王者--rabbitMQ深入理解--工作过程、消费模式、持久化等...

概述之前已经对rabbitMQ的一些基本概念做了介绍和不同MQ之间的比较&#xff0c;今天主要对rabbitMQ的一些方面做扩展。01消息队列Broker&#xff1a;简单来说就是消息队列服务器实体。Exchange&#xff1a;消息交换机&#xff0c;它指定消息按什么规则&#xff0c;路由到哪个队…