日期取值(年月日…)方式

如果不熟悉日期的操作,想要获取相应信息时,可能会写出复杂的 SQL , 比如求日期的月初时间

select hiredate,to_date(to_char(hiredate,'yyyy-mm')||'-1','yyyy-mm-dd') as 月初 from emp where rownum<=3;

其实这个一个函数即可解决,trunc()

select hiredate,trunc(hiredate,'mm') as 月初 from emp where rownum <= 3;

下面列举几个常用的日期取值方式

select hiredate,

to_number(to_char(hiredate,'hh24')) as 时,

to_number(to_char(hiredate,'mi')) as 分,

to_number(to_char(hiredate,'ss')) as 秒,

to_number(to_char(hiredate,'dd')) as 日,

to_number(to_char(hiredate,'mm')) as 月,

to_number(to_char(hiredate,'yyyy')) as 年,

to_number(to_char(hiredate,'ddd')) as 这天是年内第几天,

trunc(hiredate,'dd') as 一天之始,  /*使用trunc函数处理前,需要先将类型转为date类型*/

trunc(hiredate,'day') as 这天的周初,

trunc(hiredate,'mm') as 这天的月初,

last_day(hiredate) as 这天的月末,

add_months(trunc(hiredate,'mm'),+1) as 下月初,

trunc(hiredate,'yy') as 年初,

to_char(hiredate,'day') as 星期标识,

to_char(hiredate,'month') as 月份

from(

select hiredate + 30/24/60/60 + 20/24/60 + 5/24 as hiredate from emp where rownum <= 1) x

上面 last_day 函数的用法需要注意的是,该函数返回的时分秒参数和源数据一样,并且用 last_day 函数作为区间条件会有下面问题:

数据如下所示

with t as (select to_date('1980-12-31 15:20:30','yyyy-mm-dd hh24:mi:ss') as d1,to_date('1980-12-31 05:20:30','yyyy-mm-dd hh24:mi:ss') as d2 from dual)

select d1,d2 from t;

如果要取一个月的数据,这么写的话,会有问题

with t as (select to_date('1980-12-31 15:20:30','yyyy-mm-dd hh24:mi:ss') as d1,to_date('1980-12-31 05:20:30','yyyy-mm-dd hh24:mi:ss') as d2 from dual)

select d1,d2 from t where d1 between trunc(d2,'mm') and last_day(d2);

应该这么写才行,也就是说 last_day 不能用于处理区间条件,否则会返回空行,可以用 < add_months(trunc(d2,'mm'),+1) 代替月末:

with t as (select to_date('1980-12-31 15:20:30','yyyy-mm-dd hh24:mi:ss') as d1,to_date('1980-12-31 05:20:30','yyyy-mm-dd hh24:mi:ss') as d2 from dual)

select d1,d2 from t where d1 >= trunc(d2,'mm') and d1 < add_months(trunc(d2,'mm'),+1);

  • 62
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-date-picker组件可以通过设置value-format属性来指定日期的格式。在引用\[1\]中的示例中,value-format属性被设置为"yyyy-MM-dd HH:mm",表示日期的格式为年-月-日 时:分。在引用\[2\]中的示例中,type属性被设置为"month",表示只选择年月,而不包括具体的日期。在引用\[3\]中的示例中,value-format属性被设置为"yyyy-MM-dd",表示日期的格式为年-月-日。通过这些设置,可以实现el-date-picker组件的年月日取值。 #### 引用[.reference_title] - *1* [el-date-picker时间插件获取值格式问题](https://blog.csdn.net/u014572906/article/details/108003894)[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^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [iview 使用element年月选择器 el-date-picker type=“month](https://blog.csdn.net/qq_43780814/article/details/121379570)[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^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [el-element日期选择器el-date-picker如何出开始日期和结束日期的值](https://blog.csdn.net/xx820702/article/details/125856646)[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^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值