iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL:varchar与date类型互转,对接java数据类型String和Date
  • 155
分享到

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

mysqlmybatisjava 2023-09-08 07:09:10 155人浏览 八月长安
摘要

目录 问题现象: 问题分析: varchar 转 date : date 转 varchar:  解决方法: varchar 转 date : date 转 varchar: 问题现象:         今天在项目中遇到一个问题: 现象:

目录

问题现象:

问题分析:

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】相同的时间格式级别,然后再来匹配值,从而查询出结果。

来源地址:https://blog.csdn.net/weixin_42585386/article/details/130215791

您可能感兴趣的文档:

--结束END--

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

本文链接: https://www.lsjlt.com/news/399482.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL:varchar与date类型互转,对接java数据类型String和Date
    目录 问题现象: 问题分析: varchar 转 date : date 转 varchar:  解决方法: varchar 转 date : date 转 varchar: 问题现象:         今天在项目中遇到一个问题: 现象:...
    99+
    2023-09-08
    mysql mybatis java
  • String类型和Date类型相互转换(java)
    ** String类型和Date类型怎样相互转换? ** 1、format方法可以把Date类型转换成特定格式的String类型,如果Date类型和定义的SimpleDateFormat长度不一致会自动在后面补充0 //自定义需要输出的St...
    99+
    2023-08-23
    java jvm sql
  • 如何将String转Date类型
    ① 先创建一个日期格式化类 SimpleDateFormat ,然后从前端获取用户操作数据产生的创建时间,最后通过SimpleDateFormat 实例化对象的parse()方法将String类型转换成Date类型。 //String转Da...
    99+
    2023-09-01
    java
  • mysql中dateTime类型数据转换为date类型
    目录 一.前言 二.解决方法 2.1用sql来转换 2.2. 用注解解决 一.前言 在我们实际开发中, 数据库中有很多的数据类型, 今天我们来看一下我们的时间转化将dateTime转换成date类型 dateTime类型:  格式:20...
    99+
    2023-09-08
    mysql sql sqlserver
  • MySQL TEXT、DATE、SET 数据类型(转)
    MySQL TEXT、DATE、SET 数据类型(转)[@more@]  MySQL 数据表的字段必须有定义一个数据类型。这有大约 25 种选择,大部分都是直接明了的,就不多费口舌了。但有几个有必要提一下。...
    99+
    2024-04-02
  • java中Calendar与Date类型互相转换的方法
    下文笔者讲述使用Java代码将Calendar与Date类型互转的方法分享,如下所示:Calendar与Date类型是我们日常开发中常用的两种数据类型, 它们用于不同的场景,两者具有...
    99+
    2024-04-02
  • Go基本数据类型与string类型互转
    目录一、基本数据类型转string类型方法一:fmt.Sprintf("%参数", 表达式)方法二:使用strconv包的函数二、string类型转基本数据类型一...
    99+
    2023-03-19
    Go基本数据类型与string类型 go类型转换
  • 怎么在mongodb中将string类型转换成Date类型
    在mongodb中将string类型转换成Date类型的方法:1.启动mongodb;2.登录mongodb数据库;3.使用数据库;4.使用find()方法转换;具体步骤如下:首先,在命令行中启动mongodb服务;net start Mo...
    99+
    2024-04-02
  • 解决springboot 实体类String转Date类型的坑
    目录springboot 实体类String转Date类型Date解析String类型的参数springboot 实体类String转Date类型 前端传入一个String的时间字符...
    99+
    2024-04-02
  • Go基本数据类型与string类型怎么互转
    本篇内容介绍了“Go基本数据类型与string类型怎么互转”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、基本数据类型转string类型方...
    99+
    2023-07-05
  • java中date数据类型有什么特点
    在Java中,Date数据类型表示特定的时间点,精确到毫秒级。其特点包括: Date对象存储的时间值是从1970年1月1日 00:...
    99+
    2024-03-06
    java
  • oracle中date类型数据怎么写
    oracle date 类型数据表示日期,格式为 yyyy-mm-dd,其中 yyyy 表示年份,mm 表示月份,范围为 01 到 12,dd 表示日期,范围为 01 到 31。例如,2...
    99+
    2024-04-30
    oracle
  • springboot:接收date类型的参数方式
    目录springboot:接收date类型的参数springboot 传递Date等实体参数时候报错springboot:接收date类型的参数 今天有个postmapping方法,...
    99+
    2024-04-02
  • 数据库怎么查询date类型的数据
    要查询date类型的数据,可以使用以下方法: 使用日期函数进行查询:可以使用日期函数(如YEAR、MONTH、DAY等)来获取特定...
    99+
    2023-10-24
    数据库
  • Java数据类型分类与基本数据类型转换
    目录1.数据类型的分类2.基本数据类型转换(1)自动类型转换(2)强制类型转换 1.数据类型的分类 Java的数据类型主要分为两类:基本数据类型、引用数据类型 Java中...
    99+
    2024-04-02
  • 【Java基础】java中Long与String类型相互转换
    一、Long类型 转 String类型 Long 转 String 两种方法: 1:String str = String.valueOf(Long val); 2:String str = Long.toString(Long val);...
    99+
    2023-08-20
    java
  • MySQL数据类型对应Java数据类型
    ### 数值类型 - TINYINT:大小(1byte),范围(有符号为-128到127,无符号为0到255),用于小整数值,对应于java中的Byte类型; - SMALLINT:大小(2byte),范围(有符号为-32768到3276...
    99+
    2023-09-07
    mysql java 数据库
  • java关于后端怎么去接收Date、LocalDateTime类型的参数
    1、接收date类型的参数 Date类型后端入参的格式默认为2019/01/18 11:11:11 1.1、Get方式传参 Get方式传参 是 没有时区的影响的 @JsonFormat的作用: 返回给前端的时间是经过@JsonFormat格...
    99+
    2023-08-17
    java
  • Spring MVC实现GET请求接收Date类型参数
    目录SpringMVC GET请求接收Date类型参数Controller方法定义SpringMVC接收哪些类型参数参数支持的数据类型使用要求自定义类型转换器使用 ServletAP...
    99+
    2024-04-02
  • Java日期工具类操作字符串Date和LocalDate互转
    目录字符串转DateDate转字符串字符串转LocalDateDate转LocalDateLocalDate转字符串两个日期的时间差一天的开始和结束时间工具类前言: 避免重复造轮子,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作