MySQL 日期数据类型 – date, datetime, timestamp区别及相互转换

MySQL 日期数据类型 – date, datetime, timestamp区别及相互转换1 介绍数据库时间日期常见存储类型 取出三者后 到后端或者前端均是字符串类型 其实在数据表中存储也是字符类型 不过是有固定格式约束的字符罢了 也均可以使用 int 类型存储 使用代码二次转换 TBD 2 应用场景 存储数据到数据表时 选定字段类型 如何选取合适的时间类型是必要的 已经时间类型确定 需要转换为合适的字段类型也是在所难免 如 设计数据表时 设

1.介绍

数据库时间日期常见存储类型,取出三者后,到后端或者前端均是字符串类型[其实在数据表中存储也是字符类型,不过是有固定格式约束的字符罢了], 也均可以使用int类型存储,使用代码二次转换.

2.应用场景

存储数据到数据表时,选定字段类型, 如何选取合适的时间类型是必要的,

已经确定时间类型,需要转换为合适的字段类型也是在所难免。

如:

设计数据表时, 设计日期时间类型。

在已有数据表,转换日期时间类型。

3.学习

在数据库中一直有这三个时间类型有点搞不太清楚,总结如下:

[定义]  // 顾名思义 多数名称还是靠谱的, 顾名思义不是我们的错, 如果出现错误, 多数是因为命名的人考虑不周或者就是脑子一时进水.

[时间范围]

备注:

UTC, Coordinated Universal  Time,协调世界时,又称世界统一时间、世界标准时间、国际协调时间。

由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。

 CURRENT_DATE() 或者 CURDATE()

2、获取当前时间:

CURRENT_TIME() 或者 CURTIME()

3、获取当前日期和时间

CURRENT_TIMESTAMP() 或者 NOW()

实验SQL:

MySQL 日期数据类型 - date, datetime, timestamp区别及相互转换

4、Linux/Unix时间戳 和 MySQL时间日期类型之间的转换:

补充:

1. 验证: 到后端或者前端均是字符串类型

测试一:

代码 // 后端

MySQL 日期数据类型 - date, datetime, timestamp区别及相互转换

postman测试接口 // 前端

MySQL 日期数据类型 - date, datetime, timestamp区别及相互转换

测试二:

代码 // 后端

MySQL 日期数据类型 - date, datetime, timestamp区别及相互转换

postman测试接口 // 前端

MySQL 日期数据类型 - date, datetime, timestamp区别及相互转换

2. php 框架[kohana,已经衍生为其他框架]中,数据类型的对应转换。

其中: 包含 SQL-92 / SQL:1999 / SQL:2003 / SQL:2008 的标准

MySQL 日期数据类型 - date, datetime, timestamp区别及相互转换

MySQL 日期数据类型 - date, datetime, timestamp区别及相互转换

后续补充

4.问题/补充

1.数据表中字段类型MySQL是如何区分?他们的本质是什么?

TBD

2.执行如下SQL:// 建表sql: GitHub – cystanford/sql_heros_data: SQL课程-王者荣耀heros数据表

结果:

MySQL 日期数据类型 - date, datetime, timestamp区别及相互转换

A. birthdate字段可能会有时间包含在里面,如2019-01-01 00:00:00,如果直接和2019-01-01比较是会失败的,用DATE函数可以提取出原始数据的日期部分, 将字段 birthdate 转化为日期类型再进行比较

Q. 过滤上线时间 DATE(birthdate) NOT BETWEEN ‘2016-01-01’ AND ‘2017-01-01’,是MySQL里date类型可以直接与字符串进行比较运算?那这里birthdate可以不用 DATE 函数转换了;Oracle中日期的比较就比较严格,TO_DATE、TO_CHAR 效率也不同.

A. 是的,在ORACLE中可以使用TO_CHAR, TO_DATE做转换:

同时在MySQL中也有类似的函数

比如:

SELECT DATE_FORMAT(NOW(),‘%m-%d-%Y’) AS result

3. 踩坑记录

设置字段类型为datetime后,插入数据一直报错,该数据是从网上搜索得到的当前时区的当前的时间,– 即东八区时间,最后发现mysql默认是utc时间,格林威治时间,但是似乎这并不是应该是插入失败的原因。

TBD

MySQL 日期数据类型 - date, datetime, timestamp区别及相互转换

 总之,当时为了能插入数据,就使用的是mysql 当前时区的时间。

5.参考

Mysql date,datetime的区别以及相互转换_Swen程序员的博客-CSDN博客_mysqldate和datetime

06丨数据过滤:SQL数据过滤都有哪些方法?-极客时间

后续补充

MySQL 日期数据类型 - date, datetime, timestamp区别及相互转换

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211226.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午10:55
下一篇 2026年3月18日 下午10:55


相关推荐

  • C++ 23种设计模式(6)-适配器模式

    C++ 23种设计模式(6)-适配器模式适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。它包括类适配器和对象适配器,本文针对的是对象适配器。举个例子,在STL中就用到了适配器模式。STL实现了一种数据结构,称为双端队列(deque),支持前后两段的插入与删除。STL实现栈和队列时,没有从头开始定义它们,而是直接使用双端队列实现的。这里双端队列就扮演了适配器的角色。队列用到了它的后端插入,前端删除。而栈用到了它的后端插入,后端删除。假设栈和队列都是一种顺序容器,有两种操作:压入和弹出。

    2022年7月25日
    14
  • Numpy数据类型转换astype,dtype

    Numpy数据类型转换astype,dtypendarray数据类型astype:1、查看数据类型In[11]:arr=np.array([1,2,3,4,5])In[12]:arrOut[12]:array([1,2,3,4,5])//该命令查看数据类型In[13]:arr.dtypeOut[13]:dtype(‘int64’)In[14]:float_arr=arr.astype(np.f

    2022年6月12日
    30
  • Pycharm如何设置自动换行[通俗易懂]

    Pycharm如何设置自动换行[通俗易懂]代码编辑区自动换行对所有文件有效:(1)File->Settings->Editor->General;(2)找到SoftWraps,勾选Soft-wrapfiles;(3)在输入框中添加;*.py,如下图所示;

    2022年8月29日
    7
  • 阿里Java高级工程师面试题(含答案)

    阿里Java高级工程师面试题(含答案)1,java堆,分新生代老年代,新生代有Eden,fromsurviver,tosurviver三个空间,堆被所有线程共。eden内存不足时,发生一次minorGC,会把fromsurvivor和eden的对象复制到tosurvivor,这次的to survivor就变成了下次的fromsurvivor,经过多次minorGC,默认15次,达到次数的对象会从survivor…

    2022年5月2日
    49
  • if-else与switch

    if-else与switch

    2021年11月20日
    45
  • 官V实锤openclaw龙虾概念

    官V实锤openclaw龙虾概念

    2026年3月13日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号