首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查日期在1月至6月和7月至12月的月份

如何检查日期在1月至6月和7月至12月的月份
EN

Stack Overflow用户
提问于 2012-11-28 14:48:42
回答 4查看 3K关注 0票数 1

我有个约会。我想确认一下日期是在一月到六月还是七月到十二月之间。例如,假设用户输入日期28-11-12,那么我如何检查此日期是否在7月到12月之间?如果用户输入日期是28-2月12,那么这个日期是在1月到6月之间吗?基本上我想每半年检查一次日期?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-28 15:04:28

试试to_char function,例如这样:

代码语言:javascript
复制
select
    case
        when to_char(date_column, 'mm') <= 6 then '1st' 
        when to_char(date_column, 'mm') >= 7 then '2nd'
    end as half_of_the_year
from your_table

to_char(date_column, 'mm')返回日期的一部分月份( 01 ..12,01-1月)。

代码语言:javascript
复制
select
    case
        when to_char(sysdate, 'mm') <= 6 then '1st' 
        when to_char(sysdate, 'mm') >= 7 then '2nd'
    end as half_of_the_year
from dual

今天返回:

代码语言:javascript
复制
HALF_OF_THE_YEAR
2nd
票数 0
EN

Stack Overflow用户

发布于 2012-11-28 15:25:53

代码语言:javascript
复制
select sign(2.5-to_char(<date>, 'q')) from dual;

对于介于1月1日和6月30日之间的日期,返回1,否则返回-1

说明

to_char(date, 'q')返回日期(see format models)的一年中的季度(1,2,3,4;1-3月= 1)。对于11月28日,这将是4。

2.5-quarter分别为第3季度和第4季度返回负数,为第1季度和第2季度返回正数。sign将负数和正数减少为更简单的-11

测试用例

代码语言:javascript
复制
with da as (
  select date '2012-01-01' te from dual union all
  select date '2012-02-02' te from dual union all
  select date '2012-03-03' te from dual union all
  select date '2012-04-04' te from dual union all
  select date '2012-05-05' te from dual union all
  select date '2012-06-06' te from dual union all
  select date '2012-07-07' te from dual union all
  select date '2012-08-08' te from dual union all
  select date '2012-09-09' te from dual union all
  select date '2012-10-10' te from dual union all
  select date '2012-11-11' te from dual union all
  select date '2012-12-12' te from dual
)
select 
  da.te,
  decode (sign(2.5-to_char(da.te, 'q')),
           1, 'Jan-Jun',
          -1, 'Jul-Dec')
from da;
票数 1
EN

Stack Overflow用户

发布于 2012-11-28 14:58:09

代码语言:javascript
复制
select * from table "28-NOV-2012" WHERE date_column  between TO_DATE('01-JAN-2012') AND TO_DATE('01-JUN-2012');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13599374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档