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

理一理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 存储的 必须是正确的时间格式才行。如果存了其他非日期,会出现类型转换异常。


http://www.kler.cn/a/593084.html

相关文章:

  • Wi-Fi NAN 架构(Wi-Fi Aware Specification v4.0,第2章:2.7~2.9)
  • 【Linux———线程精讲】
  • 大模型微调02-使用LLaMA-Factory进行lora微调
  • JVM(Java虚拟机)的核心组成
  • 使用vite新建vue3项目 以及elementui的使用 vite组件问题
  • Maven生命周期
  • AI共生·安全共赢,开启智能新时代
  • QQuick3D-Model的实例化
  • Python OCR文本识别详细步骤及代码示例
  • 【算法学习之路】10.二叉树
  • 【大语言模型_7】利用ragas框架评测rag系统指标
  • git基础概念和操作
  • Matlab概率区间预测全家桶更新了,新增光伏出力区间预测,4种分布可供预测
  • node-ddk,electron 组件, 系统基上下文菜单(右键菜单)
  • 在麒麟系统(基于Ubuntu或Debuntu)的离线环境中创建本地APT仓库
  • Certd自动化申请和部署SSL证书并配置https
  • MySQL(事物下)
  • C#通过SignalR直接返回流式响应内容
  • git创建一个本地仓库与远程仓库关联并推送文件到远程仓库
  • 十八、实战开发 uni-app x 项目(仿京东)- 后端生成API文档