Oracle中的to_char和to_data函数

1、to_char函数

(1)使用场景

在oracle中存储的日期类型为Date.精确到秒钟.
当存储的时间只精确到天时, 用String类型的java字段接收该值,会导致秒分时全部为0

(2)解决方法

使用to_char函数, 可以指定最终想要的日期格式的类型.
类似于java中的SimpleDateFormat.
例如在上面的例子中, 只想要查询出来的结果精确到天.

那么在sql中使用如下:

select 
    to_char(ENDTIME,'YYYY-MM-DD') ENDTIME 
		FROM tablename

(3)其他时间格式

在sql中 , yyyy-mm-dd hh24:mi:ss 中的字母, 大小写均可.

查询24小时格式的, 精确到秒的
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')from dual;
查询12小时格式
select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss')from dual;

注意: sql中不区分大小写,可能会直觉地采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。如:select to_date(‘2005-01-01 13:14:20’,‘yyyy-MM-dd HH24:mm:ss’) from dual;

取得当前日期是一个星期中的第几天(注意:星期日是第一天)
select   sysdate,to_char(sysdate,'D')   from   dual;

类似:

select   to_char(sysdate,'yyyy')   from   dual;   --年  
select   to_char(sysdate,'Q'   from   dual;           --季  
select   to_char(sysdate,'mm')   from   dual;       --月  
select   to_char(sysdate,'dd')   from   dual;       --日  
ddd   --年中的第几天  
WW   --年中的第几个星期  
W   --该月中第几个星期  
D   --周中的星期几  
hh   --小时(12)  
hh24   --小时(24)  
Mi   --分  
ss   --秒

2、to_data函数

与to_char类似

select * from emp
         where dates
         between
         to_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss')
         and
         to_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss')

当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。

同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月。
但是,不要被这种“惯性”所迷惑,如果忽略MM参数,Oracle并不会取整到年,取整到当前月

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle的to_date函数用于将字符转换为日期,而to_char函数用于将日期转换为字符。 在使用to_date函数时,需要注意日期格式的正确性。例如,如果使用了错误的格式代码,如将分钟的格式代码写成了mm而不是mi,会导致ORA-01810错误。正确的写法应该是使用mi代替mm,如:to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss')。 另外,如果想要以24小时制的形式显示时间,需要使用HH24而不是HH。例如,to_char(sysdate,'yyyy-mm-dd HH24:mi:ss')可以将当前日期和时间以24小时制的形式显示出来。 在查询,可以使用to_char函数将日期字段转换为指定的格式进行比较。例如,可以使用to_char(hire_date,'yyyy')=2002来查询雇佣日期为2002年的员工,使用to_char(hire_date,'mm')>6 and to_char(hire_date,'mm')<=12来查询雇佣日期在7月到12月之间的员工。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [oracle的to_char和to_date函数详解](https://blog.csdn.net/hanmacangying/article/details/109002117)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Oracle的to_date和to_char用法总结](https://blog.csdn.net/weixin_44961626/article/details/89856610)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值