MySQL:varchar与date类型互转,对接java数据类型String和Date

news2024/10/5 13:59:58

目录

问题现象:

问题分析:

varchar 转 date :

date 转 varchar:

 解决方法:

varchar 转 date :

date 转 varchar:


问题现象:

        今天在项目中遇到一个问题:

现象:

        调用springboot接口,根据传入的时间参数(Date类型),查询出对应的数据。

问题:

        由于数据库存的时间参数是varchar类型,因此提出:

        当参数的数据类型与数据库不一致时,如何转换数据类型并实现条件查询?


问题分析:

        首先,针对提出的问题,其实有很多解决方案:

        1、在java代码中,转换时间参数的数据类型,保持和数据库的数据类型对应(String->varchar,Date->date):

        java的时间转换工具类网上非常多,由于不是本文的重点,这里就不举例了,有兴趣的小伙伴可以上网查找一下。

        2、另一种方式就是,在执行dao层sql的时候,通过sql语句来转换时间参数的数据类型或者是数据字段的数据类型,来实现条件查询:

        这里,重点讲一下sql关于date和varchar两种数据类型之间的互相转换:

varchar 转 date 

STR_TO_DATE(varchar字段,时间格式)

如:将varchar类型的月份字段格式转为带日期的格式

        STR_TO_DATE(end_month,'%Y-%m-%d')

        带日期的值才能和 java 的Date类型做映射。 

date 转 varchar:

        DATE_FORMAT(varchar字段, 时间格式)             

如:

        DATE_FORMAT(end_month, '%Y-%m')

        有一点需要注意的就是,varchar字段本身的时间精度必须比设置的时间格式要精确!

        怎么理解呢?

        比如上面的 end_month 字段,假如它的值是:'2023-04'

        此时如果我们要将这个值的时间格式精确到日期,那时间格式必然要设置为:'%Y-%m-%d',此时若执行sql就会得到null:

        

        显然,这就是因为 '2023-04' 的精确度只到了【月份】,没有到【日期】,无法转换成更精细的时间格式(因为系统也不知道你想精确到哪一天的日期)。

        要解决这个问题也很简单,就是先加上日期,再进行转换:


 解决方法:

varchar 转 date 

STR_TO_DATE(varchar字段,时间格式)

如:将varchar类型的月份字段格式转为带日期的格式

        STR_TO_DATE(end_month,'%Y-%m-%d')

注意:带日期的值才能和 java 的Date类型做映射,否则报错。 

date 转 varchar:

        DATE_FORMAT(varchar字段, 时间格式)             

如:

        DATE_FORMAT(end_month, '%Y-%m')

注意:varchar字段本身的时间精度必须比设置的时间格式要精确!否则结果返回null。


开头的问题:

        当参数的数据类型与数据库不一致时,如何转换数据类型并实现条件查询?

回答:

        假如数据库存的是 varchar类型的字段【end_month】数据,而java中接口获取到的是 Date类型的入参【endDate】,此时要根据入参作为查询条件,获取数据库表数据,就可以执行类似如下的sql语句:

SELECT xxx字段
FROM Table表
WHERE end_month = Date_format(#{endDate},'%Y-%m')

解析:

        【endDate】是Java中的Date类型,作为接口入参时,需要传入至少精确到【秒级】的值,

        【end_month】是MySQL中的varchar类型,所以可以先把【endDate】转化为精确到【月份】的字符串,然后再用【end_month】字段来匹配转化后的值,从而查询出结果。

        当然也可以使用 STR_TO_DATE 函数将【end_month】字段转化精确到,和【endDate】相同的时间格式级别,然后再来匹配值,从而查询出结果。

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

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

相关文章

将DataTable中的数据保存到Excel (二) 使用NPOI

文章目录 背景1 NPOI 简介2 使用NPOI2.1 创建一个简单的工作簿2.2 简单的读取内容2.3 将DataTable数据导出到Excel(NPOI)2.4 Excel(NPOI)导入到DataTable 3 NPOI 总结 背景 前面写过一篇DataTable导出到Excel的文章,使用的是Office COM组件进行导入导出&#xff0c…

第五章 法律规范

目录 第一节 法律规则 一、法律规范与法律规则的概念辨析二、法律规则的逻辑结构 (一)假定:(二)行为模式:(三)法律后果: 三、法律规则与法律条文的关系 (想法…

【vue2】使用vue-admin-template动态添加路由的思路/addRoutes的使用

😉博主:初映CY的前说(前端领域) ,📒本文核心:用原生js实现省市区联动 【前言】在通用的后台管理项目的开发中,不仅仅是会涉及到对表单数据等的增删改查操作还会涉及到一些关于权限管理的问题。我们将基于一个RBAC的思维…

FPGA设计实战演练.高级技巧篇-----读书笔记

第一章 从PCB开始研究FPGA设计问题 一、PCB布线 1、要求 对所有器件进行电源滤波,均匀分配电源,降低系统噪声。 匹配信号线,减小信号反射。 降低并行走线之间的串扰。 减小地反弹效应。 进行阻抗匹配。 2、微带传输布局,走…

全景丨0基础学习VR全景制作,平台篇第六章:全局功能-开场提示

大家好欢迎观看蛙色平台使用教程 编辑器功能位置 1、功能说明 开场提示是指VR漫游作品加载好以后,进入到全景里面时,优先展示的图像。 PC端/移动端,均可设置起到指引用户的作用。 2、功能要用在哪? (1)场…

无人机影像处理流程

无人机由于其方便快捷,精度高等特点已经广泛应用于农田尺度的作物生长监测。尤其是近年来大疆推出了两个多光谱无人机,价格也相较便宜。但目前无人机的使用实际上需要进一步处理才能获取得到农田的基本信息,主要包括影像的校正和图像拼接&…

FME教程:GIS建筑面转CAD格式JMD,还原房屋建筑结构、层数、地物样式,shp转CAD,GIS转dwg

GIS数据转CAD数据,是经常遇到的需求,但是CAD数据形式与GIS相差甚远,因此GIS转CAD后,要还原图形样式和地物属性便成为了一个难点。 今天介绍使用FME进行shp格式房屋面数据转dwg格式的JMD图层的方法。实现房屋的地物样式、结构、层…

Android studio Activity启动模式

1.四种启动模式: 1).standard(标准模式) 特点:1.Activity的默认启动模式 2.每启动一个Activity就会在栈顶创建一个新的实例。例如:闹钟程序 缺点:当Activity已经位于栈顶时…

C#模拟实现输出进销存管理系统中的每月销售明细(实验五)

实验五:模拟实现输出进销存管理系统中的每月销售明细 任务要求: 运行程序,输入要查询的月份,如果输入的月份正确,则显示本月商品销售明细;如果输入的月份不存在,则提示“该月没有销售数据或者…

什么是企业数智化的创新加速器?

数智商业创新,使得企业的发展模式有了一个更大的跃升。在数智化转型热潮中,打造数据驱动的智慧企业,实现商业创新与转型升级,构建企业新的竞争优势成为这一阶段企业管理者的核心诉求。围绕这一核心诉求,企业关键要考虑…

javascript通过canvas实现不同时区的时钟绘制

这里使用Javascript的class和canvas技术实现时钟的绘制,并且通过类实例来实现不同时区的时间显示,增强复用性。 如下图: 一、基本知识 在绘制前,我们先熟悉下本次使用到的Canvas相关基础知识,以便后面更好理解并使用。…

Bill Gates 和 Linus Torvalds 同时推崇的编程语言,不可复制的经典

1 缘起 “我们为什么没有这样的东西?!” -- Bill Gates 1988年春天,Alan Copper坐在微软的大会议室中,给Bill Gates和微软的十几名员工做了一次著名的演示。 这是个叫做Tripod的开发工具,控制面板上面是一些按钮&…

电视剧是大众文化娱乐的载体,情感、喜剧、悬疑,你钟爱哪种题材?

电视剧作为一种重要的文化娱乐产品,一直以来都受到了人们的热爱和关注。它们通过故事情节、角色塑造、美术设计等方面的表现,向观众展现了生活中的各种情感和经历,同时也传递了一些价值观和思想观念 做为低成本的的娱乐方式,能够为…

1. 数据结构与算法概述

1. 数据结构与算法概述 1.1 什么是数据结构? 官方解释: 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。 大白话: 数据结构就是把数据元素按照一定的关系组织起来的集合…

讲真的,我哭死,搞了一个画图软件

文章目录 👵回来咯👴一起画图吧👱画图软件👼项目地址 专栏Python零基础入门篇🔥Python网络蜘蛛🔥Python数据分析Django基础入门宝典🔥小玩意儿🔥Web前端学习tkinter学习笔记Excel自动…

数据结构——堆和优先队列

文章目录 前言堆堆的引入堆的定义堆的储存结构 优先队列优先队列简介优先队列的基础操作入队出队 优先队列的实现 堆的应用堆排序TOP-K问题什么是TOP-K问题TOP-K问题的排序解法TOP-K问题的堆解法 总结 前言 堆是一个比较基础,且实现起来难度也不算太大的一个数据结…

高性能RPC框架:TARS简介、设计思想、架构、特性学习

文章目录 一、TARS简介二、设计思想三、整体架构3.1 架构拓扑3.2 服务交互流程3.3 Web管理系统3.4 服务结构 四、Tars特性4.1 Tars协议4.2 调用方式4.3 负载均衡4.4 容错保护4.5 过载保护4.6 消息染色4.7 IDC分组4.8 SET分组4.9 数据监控4.10 集中配置 声明:以下内容…

文心一言 vs GPT-4 —— 全面横向比较

文心一言 vs GPT-4 —— 全面横向比较 3月15日凌晨,OpenAI发布“迄今为止功能最强大的模型”——GPT-4。我第一时间为大家奉上了体验报告《OpenAI 发布GPT-4——全网抢先体验》。 时隔一日,3月16日下午百度发布大语言模型——文心一言。发布会上&#…

开放式蓝牙耳机推荐,列举出几款值得入手的开放式蓝牙耳机

随着耳机市场的发展,骨传导耳机的出现也逐渐受到了市场的认可,骨传导耳机,是通过颅骨来进行声音传导的一种耳机。与传统的入耳式耳机不同,骨传导耳机不需要将耳朵堵上,而是通过颅骨震动将声音传到内耳,所以…

IDEA快速部署Spring Boot 项目到Docker

IDEA快速部署Spring Boot 项目到Docker 文章目录 IDEA快速部署Spring Boot 项目到Docker一、IDEA 连接 Docker自己的虚拟机远程服务器 二、Maven插件与Dockerfiledocker-maven-pluginDockerfile 三、项目打包上传镜像四、容器的创建与运行容器的创建环境的检查访问项目检验 一、…