MySQL的日期时间类型

一 MySQL的日期时间类型

MySQL数据库的日期时间类型有date、time和datetime类型,还有timestamp类型,在Java代码中无论日期时间是什么样的格式,转换sql语句时统一为yyyy-MM-dd HH:mm:ss.S(Timestamp)的格式,创建案例简单演示。

1.1 创建数据库表

CREATE TABLE `apple` ( `id` varchar(255) DEFAULT NULL, `date_variable` date DEFAULT NULL, `time_variable` time DEFAULT NULL, `datetime_variable` datetime DEFAULT NULL )

1.2 创建apple表的基础代码

@Data @AllArgsConstructor @NoArgsConstructor @TableName("apple") public class Apple { private String id; private Date dateVariable; private Date timeVariable; private Date datetimeVariable; } @Mapper public interface AppleMapper extends BaseMapper<Apple> { } public interface IAppleService extends IService<Apple> { } @Service public class AppleServiceImpl extends ServiceImpl<AppleMapper, Apple> implements IAppleService { }

1.3 插入日期时间数据

@SpringBootTest @RunWith(SpringRunner.class) public class AppleTest { @Autowired private IAppleService appleService; @Test public void test1() throws ParseException { Apple apple = new Apple(); apple.setId("1001"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = simpleDateFormat.parse("2024-01-01 01:01:01"); apple.setDatetimeVariable(date); appleService.save(apple); } }

当代码中的日期时间格式是yyyy-MM-dd HH:mm:ss,没有指定毫秒值,sql语句解析如下:
==> Preparing: INSERT INTO apple ( id, datetime_variable ) VALUES ( , )
==> Parameters: 1001(String), 2024-01-01 01:01:01.0(Timestamp)
<== Updates: 1

@SpringBootTest @RunWith(SpringRunner.class) public class AppleTest { @Autowired private IAppleService appleService; @Test public void test1() throws ParseException { Apple apple = new Apple(); apple.setId("1002"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); Date date = simpleDateFormat.parse("2024年01月02日 01时01分01秒"); apple.setDatetimeVariable(date); appleService.save(apple); } }

当代码中的日期时间格式是yyyy年MM月dd日 HH时mm分ss秒,没有指定毫秒值,sql语句解析如下:
==> Preparing: INSERT INTO apple ( id, datetime_variable ) VALUES ( , )
==> Parameters: 1002(String), 2024-01-02 01:01:01.0(Timestamp)
<== Updates: 1
在Java代码中无论日期时间(不指定毫秒值)是什么样的格式,转换sql语句时统一为yyyy-MM-dd HH:mm:ss.S(Timestamp)的格式

1.4 MySQL的date类型

@Test public void test1() throws ParseException { List<Apple> list = new ArrayList<>(); Apple apple = new Apple(); apple.setId("1001"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = simpleDateFormat.parse("2023-12-06 17:59:27"); apple.setDateVariable(date); Apple apple2 = new Apple(); apple2.setId("1002"); SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd"); Date date2 = simpleDateFormat2.parse("2023-12-06"); apple2.setDateVariable(date2); Apple apple3 = new Apple(); apple3.setId("1003"); SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy"); Date date3 = simpleDateFormat3.parse("2023"); apple3.setDateVariable(date3); list.add(apple); list.add(apple2); list.add(apple3); appleService.saveBatch(list); }

在Java代码中无论日期时间(不指定毫秒值)是什么样的格式,转换sql语句时统一为yyyy-MM-dd HH:mm:ss.S(Timestamp)的格式,代码中的sql语句解析如下:
==> Preparing: INSERT INTO apple ( id, date_variable ) VALUES ( , )
==> Parameters: 1001(String), 2023-12-06 17:59:27.0(Timestamp)
==> Parameters: 1002(String), 2023-12-06 00:00:00.0(Timestamp)
==> Parameters: 1003(String), 2023-01-01 00:00:00.0(Timestamp)

apple表中的date_variable字段是date类型,数据库表存储date类型的格式是yyyy-MM-dd, 多余的日期时间数据会截取掉,缺省的日期默认取01月01日,上述三条记录入表如下:

1.5MySQL的time类型

@Test public void test1() throws ParseException { List<Apple> list = new ArrayList<>(); Apple apple4 = new Apple(); apple4.setId("1004"); SimpleDateFormat simpleDateFormat4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); Date date4 = simpleDateFormat4.parse("2023-12-06 17:59:27.123"); apple4.setTimeVariable(date4); Apple apple5 = new Apple(); apple5.setId("1005"); SimpleDateFormat simpleDateFormat5 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date5 = simpleDateFormat5.parse("2023-12-06 17:59:27"); apple5.setTimeVariable(date5); Apple apple6 = new Apple(); apple6.setId("1006"); SimpleDateFormat simpleDateFormat6 = new SimpleDateFormat("yyyy-MM-dd HH"); Date date6 = simpleDateFormat6.parse("2023-12-06 17"); apple6.setTimeVariable(date6); Apple apple7 = new Apple(); apple7.setId("1007"); SimpleDateFormat simpleDateFormat7 = new SimpleDateFormat("yyyy-MM-dd"); Date date7 = simpleDateFormat7.parse("2023-12-06"); apple7.setTimeVariable(date7); list.add(apple4); list.add(apple5); list.add(apple6); list.add(apple7); appleService.saveBatch(list); }

在Java代码中无论日期时间(不指定毫秒值)是什么样的格式,转换sql语句时统一为yyyy-MM-dd HH:mm:ss.S(Timestamp)的格式,如果日期时间格式带有毫秒值,那么转换sql语句时将带有对应的毫秒值,代码中的sql语句解析如下:
==> Preparing: INSERT INTO apple ( id, time_variable ) VALUES ( , )
==> Parameters: 1004(String), 2023-12-06 17:59:27.123(Timestamp)
==> Parameters: 1005(String), 2023-12-06 17:59:27.0(Timestamp)
==> Parameters: 1006(String), 2023-12-06 17:00:00.0(Timestamp)
==> Parameters: 1007(String), 2023-12-06 00:00:00.0(Timestamp)

apple表中的time_variable字段是time类型,数据库表存储time类型的格式是HH:mm:ss, 多余的日期时间数据会截取掉,缺省的时间默认取00时00分00秒,上述四条记录入表如下:

1.6MySQL的datetime类型

@Test public void test1() throws ParseException { List<Apple> list = new ArrayList<>(); Apple apple8 = new Apple(); apple8.setId("1008"); SimpleDateFormat simpleDateFormat8 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); Date date8 = simpleDateFormat8.parse("2023-12-06 17:59:27.123"); apple8.setDatetimeVariable(date8); Apple apple9 = new Apple(); apple9.setId("1009"); SimpleDateFormat simpleDateFormat9 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date9 = simpleDateFormat9.parse("2023-12-06 17:59:27"); apple9.setDatetimeVariable(date9); Apple apple10 = new Apple(); apple10.setId("10010"); SimpleDateFormat simpleDateFormat10 = new SimpleDateFormat("yyyy-MM-dd HH"); Date date10 = simpleDateFormat10.parse("2023-12-06 17"); apple10.setDatetimeVariable(date10); Apple apple11 = new Apple(); apple11.setId("10011"); SimpleDateFormat simpleDateFormat11 = new SimpleDateFormat("yyyy-MM-dd"); Date date11 = simpleDateFormat11.parse("2023-12-06"); apple11.setDatetimeVariable(date11); Apple apple12 = new Apple(); apple12.setId("10012"); SimpleDateFormat simpleDateFormat12 = new SimpleDateFormat("yyyy"); Date date12 = simpleDateFormat12.parse("2023"); apple12.setDatetimeVariable(date12); list.add(apple8); list.add(apple9); list.add(apple10); list.add(apple11); list.add(apple12); appleService.saveBatch(list); }

在Java代码中无论日期时间(不指定毫秒值)是什么样的格式,转换sql语句时统一为yyyy-MM-dd HH:mm:ss.S(Timestamp)的格式,如果日期时间格式带有毫秒值,那么转换sql语句时将带有对应的毫秒值,代码中的sql语句解析如下:
==> Preparing: INSERT INTO apple ( id, datetime_variable ) VALUES ( , )
==> Parameters: 1008(String), 2023-12-06 17:59:27.123(Timestamp)
==> Parameters: 1009(String), 2023-12-06 17:59:27.0(Timestamp)
==> Parameters: 10010(String), 2023-12-06 17:00:00.0(Timestamp)
==> Parameters: 10011(String), 2023-12-06 00:00:00.0(Timestamp)
==> Parameters: 10012(String), 2023-01-01 00:00:00.0(Timestamp)

apple表中的datetime_variable字段是datetime类型,数据库表存储datetime类型的格式是yyyy-MM-dd HH:mm:ss, 多余的日期时间数据会截取掉,缺省的日期默认取01月01日 00时00分00秒,上述五条记录入表如下:

二 MySQL的datetime和timestamp

MySQL数据库的datetime和timestamp类型比较:
datetime类型需要8个字节的存储空间,timestamp类型需要4个字节的存储空间;
datetime类型的取值范围1001-01-01 00:00:00到9999-12-31 23:59:59;
timestamp类型的取值范围1970-01-01 00:00:00到2037-12-31 23:59:59 utc世界统一时间;
datetime类型存储的是本地时区(东八区)的日期时间,其他时区的用户查看数据也是东八区的日期时间,存在必然的误差,datetime类型存储数据基本上是原样输入和输出;
timestamp类型存储的是毫秒值,当前时间距1970-01-01 00:00:00的毫秒值,存储数据的时候需要对当前时间所在的时区进行转换,查询数据的时候再将时间转换为当前的时区,so使用timestamp类型存储的同一个时间值,在不同的时区查询时会显示不同的时间;
一般地,MySQL数据库存储日期时间使用datetime类型,用于日期时间函数计算使用timestamp类型,还有跨时区的业务用timestamp类型更合适;

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

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

相关文章

生产级支付系统实践指南:支付宝 微信全渠道 Java 实现

本文提供了支付宝和微信支付的完整 Java 示例,同时结合生产环境最佳实践,从开发、接口封装、异步通知、幂等处理、对账退款到安全策略,形成一套可落地的支付系统方案。 目录 项目依赖与配置 支付宝支付示例 H5支付 扫码支付(订单码支付) 微信支付示例 H5支付 扫码支付(Na…

大模型Prompt结构化:打造可解释、可扩展的稳定应用,开发必藏

文章阐述了Prompt结构化的必要性&#xff0c;强调结构化能确保系统行为可预测、改动可控。提出了四段式Prompt结构&#xff1a;Role&#xff08;身份边界&#xff09;、Task&#xff08;具体目标&#xff09;、Constraints&#xff08;禁止行为&#xff09;和OutputSchema&…

在深圳龙岗某电子厂流水线上,这套基恩士螺丝机组装设备已经稳定运行了5000+工时。作为厂里自动化升级的核心设备,它的运动控制程序藏着不少值得细品的实战技巧

基恩士PLC写的螺丝机程序&#xff0c;配置为基恩士KV5000定位模块KV-MC20V输入扩展模块KV-C16XTD 威伦 MT8071IE触摸屏&#xff0c;已实际用在工厂上&#xff0c;程序注释详细&#xff0c;是一个想学基恩士中型PLC 轴运动的好例子硬件配置乍看平平无奇&#xff1a;KV5000主控MC…

在深圳龙岗某电子厂流水线上,这套基恩士螺丝机组装设备已经稳定运行了5000+工时。作为厂里自动化升级的核心设备,它的运动控制程序藏着不少值得细品的实战技巧

基恩士PLC写的螺丝机程序&#xff0c;配置为基恩士KV5000定位模块KV-MC20V输入扩展模块KV-C16XTD 威伦 MT8071IE触摸屏&#xff0c;已实际用在工厂上&#xff0c;程序注释详细&#xff0c;是一个想学基恩士中型PLC 轴运动的好例子硬件配置乍看平平无奇&#xff1a;KV5000主控MC…

互联网大厂Java面试:从Java SE到微服务的技术深度探索

互联网大厂Java面试&#xff1a;从Java SE到微服务的技术深度探索 第一轮提问&#xff1a;Java核心与平台 面试官&#xff1a; 谢飞机&#xff0c;请你谈谈Java SE 8新增的Lambda表达式的实际应用场景。 谢飞机&#xff1a; 哦&#xff0c;这个我知道&#xff01;Lambda表达式可…

深度学习毕设项目:基于python-CNN卷积神经网络对盆栽识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

微信AI小程序“亿元计划”来了!你的APP如何一键接入,抢先变现?

随着AI浪潮席卷而来&#xff0c;**微信小程序再次抢跑&#xff0c;推出“AI应用及线上工具小程序成长计划”&#xff0c;**为开发者送上云开发资源、AI算力与商业化支持“大礼包”。 AI应用的验证与迭代&#xff0c;正越来越依赖**轻量、易传播、社交属性强的载体。**而小程序&…

西门子PLC模拟量滤波程序:1200与1500通用的实用功能块

西门子PLC模拟量滤波程序&#xff0c;西门子1200和1500通用&#xff0c;有电压或者电流或者热电偶选择&#xff0c;高低位和高高低低位报警&#xff0c;有滤波功能&#xff0c;非常实用的功能块&#xff0c;配有详细的注释&#xff0c;帮助快速理解。在自动化控制领域&#xff…

容器-Docker逃逸的各种手法总结!

当涉及到容器技术和应用程序隔离时&#xff0c;Docker是一个被广泛采用的解决方案&#xff0c;其使得应用程序的部署变得更加简单高效。然而&#xff0c;作为攻击者&#xff0c;在实际渗透时&#xff0c;好不容易拿到了一个shell&#xff0c;但是却发现所处的环境在docker容器里…

VisionPro之缺陷检测解决策略之七:直接区域灰度判断-CogHistogramTool

VisionPro之缺陷检测解决策略之七:直接区域灰度判断-CogHistogramTool定位ROI灰度均值后处理 通过判断灰度均值是否超过阈值&#xff0c;判定OK或者NG

C++计算两个向量之间的三角函数值(sin,cos,tan)

//计算向量角度 void calculateVectorAngle(double dir1[3], double dir2[3], double* sinVal, double* cosVal, double* tanVal) {// 计算点积double dotProduct 0.0;for (int i 0; i < 3; i){dotProduct dir1[i] * dir2[i];}// 计算向量模长double mag1 0.0;double ma…

【互联网产品助理的成长之路(7)】需求中止的判断方法

核心价值评估方面&#xff0c;首先要确认用户痛点真实存在且未被伪需求掩盖&#xff0c;通过用户调研、数据埋点及竞品分析来验证其普遍性与严重性。同时&#xff0c;检查现有方案是否已覆盖需求或通过简单优化即可满足&#xff0c;避免重复造轮子现象的发生。成本效益分析中&a…

【毕业设计】基于python_CNN卷积神经网络对甜点识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

elf 格式 relocation 概念

author: hjjdebug date: 2026年 01月 08日 星期四 15:12:21 CST descrip: elf 格式 relocation 概念 文章目录1. 查看test 的重定位信息2. .rela.dyn 区与 .rela.plt 区的区别和联系3 概括动态绑定的过程4. 介绍 .rela 结构5. r_info 的type 有多少种?6. 补充: 节区表关于符号…

给wordpress网站的图片加alt标签

给wordpress网站的图片加alt标签的几种方法&#xff0c;在实际应用中可以根据自己的需求&#xff0c;调用最适合自己的。 直接输出文章标题(和原来一样&#xff0c;仅作占位&#xff0c;无特殊处理) alt"<?php echo esc_attr( get_the_title() ); ?>" 取“…

计算机深度学习毕设实战-基于python-CNN卷积神经网络对盆栽识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

计算机三级-嵌入式组-考点汇总-嵌入式系统软件

四、嵌入式系统软件1.硬件抽象层与板级支持包1-1. 硬件抽象层硬件抽象层(HAL)是在操作系统层与硬件之间设置的独立的接口软件层&#xff0c;是所有直接依赖于硬件的软件。对硬件进行抽象&#xff0c;使上层软件开发人员无须关心底层硬件的具体细节和差异&#xff0c;支持上层软…

【实战案例】火语言RPA获取下拉联想推荐词

一、案例概述 本案例基于火语言 RPA 可视化流程&#xff0c;实现淘宝首页搜索框下拉联想词的自动抓取&#xff0c;并将结果保存至本地文本文件。适用于快速适配各类带下拉联想词的网页场景。 二、实现逻辑 1、启动内置浏览器并访问淘宝首页&#xff1b; 2、处理页面登录弹窗&…

2026 年用什么 CMS 做网站更合适?一些实际对比思考

这几年做网站越来越明显的一个变化是&#xff1a; 建站本身已经不是难点&#xff0c;持续获取搜索流量才是核心问题。 到了 2026 年&#xff0c;选择 CMS 时&#xff0c;单纯“好不好用”已经不够了&#xff0c;更重要的是它是否有利于长期 SEO、内容规模化、以及多站点管理。…