oracle 转换一个日期时间对应的半年(上半年/下半年)的第一天和最后一天
发布网友
发布时间:2022-05-02 20:57
我来回答
共4个回答
热心网友
时间:2023-10-09 12:27
试试下面语句:当天日期小于7月时取当年的第一天,当天日期大于6月时取7月的第一天。
select case when to_char(sysdate,'mm')<7 then trunc(sysdate,'YYYY') else
trunc(add_months(sysdate,-to_char(sysdate,'mm')+7),'mm') end from al;
热心网友
时间:2023-10-09 12:28
SELECT
CASE WHEN
MOD(EXTRACT(MONTH FROM TRUNC( SYSDATE, 'Q' )) , 2) = 1 THEN
TRUNC( SYSDATE, 'Q' )
ELSE
ADD_MONTHS( TRUNC( SYSDATE, 'Q' ), -3)
END
FROM
al;
有点复杂
算法是:
判断 本季度第一天是几月, 月份是 奇数的 ( 1月 7 月), 那么 就是 要的结果了
如果月份是偶数的, 那么 在此基础上, 向前减少3月.
热心网友
时间:2023-10-09 12:28
试试这样吧:
to_date(DECODE(to_char(sysdate,'yyyy-mm'),
'2012-01','2012-01-01',
'2012-02','2012-01-01',
'2012-03','2012-01-01',
'2012-04','2012-01-01',
'2012-05','2012-01-01',
'2012-06','2012-01-01',
'2012-07-01'
),'yyyy-mm-dd')
热心网友
时间:2023-10-09 12:29
add_months(trunc(sysdate,'yyyy'),case when to_number(to_date(sysdate,'mm'))>6 then 6 else 0 end)