oracle日期与字符串的相互转化

您所在的位置:网站首页 把时间改成上午 oracle日期与字符串的相互转化

oracle日期与字符串的相互转化

2024-07-12 14:02| 来源: 网络整理| 查看: 265

文章目录 1.字符串转为日期格式(to_date)2.日期格式转字符串(to_char)3.日期范围查询4. 等于某日期的查询5. LocalDateTime的使用6. between...and查询日期时存在的问题

1.字符串转为日期格式(to_date)

例1:把字符串类型2005-01-01 13:14:20 转成 2005/1/1 13:14:20日期格式

select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;

结果: 在这里插入图片描述 例2:把字符串类型30-11月-19 转成 2018/12/31 日期格式

select to_date('30-11月-19 ', 'dd-mon-yy') from dual

结果: 在这里插入图片描述 注意:字符串转日期时,字符串和日期格式要匹配,如字符串格式为30-11月-19,如果后边跟yyyy-MM-dd就会报格式不匹配的错误,必须使用dd-mon-yy

2.日期格式转字符串(to_char)

例1:把sysdate(2020/5/12 17:31:23)转化为yyyy-MM-dd HH24:mi:ss字符串格式

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

结果: 在这里插入图片描述 例2:表car.lp_totallpdata中有一个字段enddate字段,代表了结束日期。enddate字段中的数据格式是varchar2类型的:(30-11月-19),现在要求查出表中结束日期等于字符串’2019-11’的数据

也就是说图片描也就是说述 也就是说找出enddate = ‘2019-11’的数据

分析: 首先30-11月-19 和 2019-12都属于字符串类型的,但是他们的格式不一样,我们可以先把enddate字段中的数据转化为正常的日期格式,再把他转化为字符串,看他与2019-12是否相等 1.先把enddate字段中的数据转化为正常的日期格式

to_date(t.enddate, 'dd-mon-yy') //先转化为日期 30-11月-19==> 2019/11/30

2.再把他转化为我们想要的字符串

to_char(to_date(t.enddate, 'dd-mon-yy'),'yyyy-mm') // 2019/11/30 ==> 2019-11

2.完整的过滤sql

select t.* from car.lp_totallpdata t where to_char(to_date(t.enddate, 'dd-mon-yy'),'yyyy-mm')='2019-11'

3.日期范围查询

日期的范围查询,假设要查询 2011-05-02 到 2011-05-30 之间的数据 这条查询语句有两种实现方式:

假设数据库的字段 time 为 日期类型,传来的数据为字符串类型!!! 1. to_date 方式

把传来的数据 2011-05-02 、 2011-05-02 转化为日期再与time比较

select * from tablename where time >= to_date('2011-05-02','yyyy-mm-dd') and time 0)) { return BaseResp.fail("查询日期范围仅支持三个月!"); }

  需求案例:找出所有任务中,离当前时间最近的任务信息,并返回!

@RequestMapping(value = "/memory",method = RequestMethod.GET) @ApiOperation("修理厂录入定损任务-记忆功能") @ApiImplicitParam(paramType = "query", name = "openid", value = "修理厂openid", required = true, dataType = "String") public R memory(@RequestParam("openid") String openid) { // 1.获取该openid下的所有定损任务 List memoryInfo = kfAppointmentDsService.list(new QueryWrapper().eq("factory_openid", openid)); // 2.收集所有已提交的定损任务的-提交时间戳 List collect = memoryInfo.stream() .map(KfAppointmentDsEntity::getApplyTime) .map(x -> { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 把Date格式转化为时间戳 return LocalDateTime.parse(x, formatter).toEpochSecond(ZoneOffset.of("+8")); }).collect(Collectors.toList()); // 3.通过比较时间戳大小,收集最近一次的提交时间戳 Long maxTime = collect.get(0); for (int i = 0; i = ‘2009-1-22’ And date =、


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3