这两个函数经常一起使用,to_char是把日期字段按一定格式转化成字符串,to_date是将字符串格式字符串转成日期格式
select to_char(datetime'2010-12-03 00:00:00', 'yyyymmdd'); -- 20101203
第二个参数是需要转成字符串的格式,yyyy表示年、mm表示月、dd表示日,时分秒也有对应的字符表示。你还可以在第二个参数中增加其他字符来打印固定格式的字符串或者转换成其他格式的日期。其它更详细的内容欢迎在评论区讨论。
select to_date('20101203', 'yyyymmdd'); --2010-12-03 00:00:00
select to_date('2010/12/03X', 'yyyy/mm/ddX'); --2010-12-03 00:00:00
to_date函数第二个参数表示字符串的格式,告诉函数如何获取字符串中日期相关数字。
两个函数共同使用能解决日期格式转换的问题。
看下如何将 "我们要在2022/06/03号参加毕业典礼" 中日期提取出来并转成年月日格式
select to_char( to_date('我们要在2022/06/03号参加毕业典礼', '我们要在yyyy/mm/dd号参加毕业典礼') , 'yyyymmdd') ; -- 20220603
来个实践题目,假设给定表A(order_date, order_amt) 表示下单日期和订单金额,如何统计出最近30天内订单金额总和? 参考示例如图所示