oracle to_char 和 to_date的区别,斜杠和横杠日期转换,mybatis中入参日期,数据库字段是date的写法


时间和字符串的转换是最常用的操作,必须熟练掌握。
oracle和mysql的方法不一样。

****时间转换为字符串字符串转换为时间
oracleto_char(create_date,‘yyyy-MM-dd’)to_date(‘2024-05-30’,‘yyyy-MM-dd’)
mysqldate_format(create_date,‘%Y-%m-%d’)str_to_date(‘2024-05-30’,‘%Y-%m-%d’)

oracle

to_char 是时间转转换为字符串
to_date 是字符串转换为时间

如: 字段是带有汉字的,那么用to_char

to_char(kprq,'yyyy-MM-dd')

如:

inv_date between to_date('2019-01-01','yyyy-MM-dd')

斜线日期转换为横线

例如日期为 2019/4/3

-- 这2种方法都可以
select to_date('2019/4/3',‘yyyy/MM/dd’);
select to_date('2019/4/3',‘yyyy-MM-dd’);

然后再转换为日期即可,完整语句如下:

-- 输出 2019-04-03
select to_char(to_date('2019/4/3','yyyy/MM/dd'),'yyyy-MM-dd') from dual;

这样的时间字符串如何转换20201212040506258

这个是 年月日时分秒毫秒 的字符串拼接。 如果想拿到2019-03-04这样的字符串呢?

to_char(to_date(substr(create_date,0,8),'yyyyMMdd'),'yyyy-MM-dd') 

ORA-01830: 日期格式图片在转换整个输入字符串之前结束

一般是日期格式不对,例如:
传入的是 ‘2021-06-15 00:00:00’,
用的函数是 create_date = to_date(#{createDate,jdbcType=VARCHAR},‘yyyy-MM-dd’),那么就会报错。

mybatis中入参日期,数据库字段是date的写法

<if test="startDate != null and startDate != ''">
    AND CREATE_DATE &gt;= to_date(#{startDate},'yyyy-MM-dd HH24:MI:SS')
</if>
<if test="endDate != null and endDate != ''">
    AND CREATE_DATE &lt;= to_date(concat(#{endDate},'23:59:59'),'yyyy-MM-dd HH24:MI:SS')
</if>

mysql

mysql的写法不一样,oracle是to_char() to_date()
mysql是str_to_date() 和date_format()

STR_TO_DATE(‘2024-05-30’,‘%Y-%m-%d’)

DATE_FORMAT(now(),‘%Y-%m-%d’)

mysql 格式化

值 说明
%a 工作日名称缩写(从星期日到星期六)
%b 月份名称缩写(1月至12月)
%c 月份作为数字值(0到12)
%D 该月中的一天作为数字值,后跟后缀(第一,第二,第三,…)
%d 每月的某天(从01到31)作为数值
%e 一个月中的一天(从0到31)作为数值
%f 微秒(000000至999999)
%H 小时(00到23)
%h 小时(00到12)
%I 小时(00到12)
%i 分钟(00到59)
%j 一年中的某天(001至366)
%k 小时(00到23)
%l 小时(1到12)
%M 完整的月份名称(1月至12月)
%m 月份名称作为数字值(00到12)
%p 上午或下午
%r 采用12小时制AM或PM格式的时间(hh:mm:ss AM/PM)
%S 秒(00到59)
%s 秒(00到59)
%T 24小时制时间(hh:mm:ss)
%U 星期几是星期的第一天(00到53)
%u 每周的星期一是一周的第一天(00到53)
%V 星期几是星期的第一天(01到53) 从MySQL 3.23.8开始可用,并与%X一起使用
%v 星期几,星期一是一周中的第一天(01到53) 从MySQL 3.23.8开始可用,并与%X一起使用
%W 平日全名(周日至周六)
%w 星期几,其中周日= 0,周六= 6
%X 一周中第一天的星期几 从MySQL 3.23.8开始可用,并与%V一起使用
%x 一周的第一天为周一的第一天 从MySQL 3.23.8开始可用,并与%v 一起使用
%Y 年份(4位数字)
%y 年份(两位数)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值