当前位置: 首页 > news >正文

理一理Mysql日期

在 MySQL 数据库中,关于日期和时间的类型主要有以下几种:

1. **DATE**: 仅存储日期部分,格式为 `YYYY-MM-DD`,例如 `2023-10-31`。

2. **TIME**: 仅存储时间部分,格式为 `HH:MM:SS`,例如 `14:30:00`。

3. **DATETIME**: 存储日期和时间,格式为 `YYYY-MM-DD HH:MM:SS`,例如 `2023-10-31 14:30:00`。

4. **TIMESTAMP**: 存储日期和时间,格式为 `YYYY-MM-DD HH:MM:SS`,并且会根据时区进行转换,通常用于记录数据的创建和修改时间。

5. **YEAR**: 存储年份,格式为 `YYYY`,例如 `2023`。

这些类型可以根据具体需求选择使用,以便在数据库中存储和处理日期和时间数据。

在 MySQL 中,`TIMESTAMP` 类型有一些限制和注意事项:

1. **时区影响**:`TIMESTAMP` 会根据服务器的时区进行存储和检索,因此在不同的时区环境中可能会导致时间不一致的问题。

2. **自动初始化和更新**:`TIMESTAMP` 列可以自动初始化为当前时间或在记录更新时自动更新为当前时间。这在某些情况下很有用,但也可能导致意外的行为。

3. **范围限制**:`TIMESTAMP` 的有效范围是 `1970-01-01 00:00:01` UTC 到 `2038-01-19 03:14:07` UTC。如果需要存储超出此范围的日期和时间,建议使用 `DATETIME` 类型。

4. **默认值限制**:在 MySQL 5.6 之前,`TIMESTAMP` 列必须有一个默认值,通常是 `CURRENT_TIMESTAMP`。在 MySQL 5.6 及之后的版本中,这个限制有所放宽。

5. **存储大小**:`TIMESTAMP` 占用 4 字节的存储空间,而 `DATETIME` 占用 8 字节。

这些限制在使用 `TIMESTAMP` 类型时需要注意,以确保数据的正确性和一致性。

如果保存的时间是 1900-01-01 00:00:00, 

timestamp 类型是保存不了的

一般使用DATETIME类型就可以了。包含了 日期和时间,如果有些场景只需要日期,比如按天维度的,那么用DATE来存储。

建议不使用 timestamp类型,因为存储范围有限。

所以,首先 DATETIME,其次根据需要选 DATE

再JDK中,提供了三种日期:

1. 

java.util.Date

util 包下的Date,就是 包含日期和时间,不论数据库中是什么类型。

例如:

`Mon Jan 01 00:00:00 CST 1900` 这种格式是 Java 中 `Date` 类的默认字符串表示形式。它包含以下部分:

1. **星期**:`Mon` 表示星期一。
2. **月份**:`Jan` 表示一月。
3. **日期**:`01` 表示1号。
4. **时间**:`00:00:00` 表示午夜零点。
5. **时区**:`CST` 表示中国标准时间(China Standard Time)。
6. **年份**:`1900` 表示年份1900年。

这种格式是通过 `Date` 类的 `toString()` 方法生成的。

对于表结构中:

1 如果的Date ,转为util下的Date时, 时间部分是 00:00:00

2. 如果是Time,转为util下的Date时,日期部分是 1970-01-01

3. 如果是DATETIME 或者 TIMESTAMP,转为util下的Date时,没问题,包含日期 时间

2.

java.sql.Date

java.sql.Time

java.sql.Timestamp

sql 包下的Date,基本和表里的对应

Date 只包含日期

Time只包含时间

Timestamp 包含日期和时间

3.

java.time.LocalDate

java.time.LocalTime

java.time.LocalDateTime

time包下的,和 表里的基本也是对应的

如果表中的字段类型是 varchar,存储的是时间,也可以用上面三类来就收。

只是,varchar 存储的 必须是正确的时间格式才行。如果存了其他非日期,会出现类型转换异常。

相关文章:

  • [原创](Modern C++)现代C++的关键性概念: std::mem_fn是std::bind的轻量级版本, 它们的区别是什么?
  • 蓝桥杯嵌入式赛道复习笔记4(TIM输出PWM,TIM输入捕获)
  • Android compose中的附带效应-人话
  • 学习C2CRS Ⅳ (Conversational Recommender Model)
  • IDEA的常用设置与工具集成
  • 玩转python:通俗易懂掌握高级数据结构-collections模块之UserDict
  • 第三:go 操作mysql
  • 在 Visual Studio Code 中高效使用 Pylance:配置、技巧与插件对比
  • 25.3.19(java 数据类型 及数据之间的转换)
  • MySQL 面试题
  • Linux 系统性能调优
  • 【leetcode hot 100 994】腐烂的橘子
  • MongoDB 更新集合名
  • UML(统一建模语言)中总共有哪些图
  • VLLM专题(三十六)—自动前缀缓存
  • 当Anaconda的安装路径与我想创建的conda虚拟环境路径不一致时,应该怎么操作?
  • STM32-汇编
  • 【漫话机器学习系列】143.轮廓系数(Silhouette Coefficient)
  • QT 磁盘文件 教程03-创建、删除、复制文件
  • numpy学习笔记2:ones = np.ones((2, 4)) 的详解
  • 开公司怎么找客户/seo点击排名工具
  • wordpress付费剧集网站/sem代运营公司
  • 金山网站制作/成都百度推广公司联系电话
  • 饿了吗外卖网站怎么做/google 网站推广
  • 网站开发公司制作平台/b站推广有用吗
  • 企业网站备案是什么意思/链接提交工具