【问题标题】:Filter By date with format 'dd/mm'按日期过滤,格式为“dd/mm”
【发布时间】:2019-05-15 06:26:48
【问题描述】:

我在语法查询 dbms oracle 以按日期过滤时遇到困难,但我只想按日期过滤,格式为 (dd/mm)。我的数据库记录是(dd/mm/yyyy)。查询如何按日期 mm/dd 过滤

tablename.fieldname >= '01/01'

【问题讨论】:

  • 请提供样本数据和期望的结果。我不明白在这种情况下如何使用>=

标签: sql oracle


【解决方案1】:
with s as (
select date '2019-01-01' + level * 15 dt from dual connect by level <= 20)
select s.*
from s
where to_number(to_char(dt, 'mmdd')) > 0501;

DT                 
-------------------
2019-05-16 00:00:00
2019-05-31 00:00:00
2019-06-15 00:00:00
2019-06-30 00:00:00
2019-07-15 00:00:00
2019-07-30 00:00:00
2019-08-14 00:00:00
2019-08-29 00:00:00
2019-09-13 00:00:00
2019-09-28 00:00:00
2019-10-13 00:00:00
2019-10-28 00:00:00

12 rows selected.

【讨论】:

  • 不是工作大师,他们仍然显示月份 > 01 和 s as( 选择日期 '2019-01-01' + level * 15 dt from dual connect by level
  • 对不起,我已将您的代码编辑为 ddmm,请查看我的评论代码。大师
  • 我想按 dd/mm 过滤生日过滤器
  • @DimasPrayoga 由于订购,您需要按 mmdd 过滤才能获得结果。 '15/12' 小于 '23/01,尽管 12 月 15 日晚于 1 月 23 日。您必须先按月排序,然后按天排序。
  • @Boneist 我很难实现该代码
【解决方案2】:

你尝试过这样的事情吗?虽然它不是你想要的格式

SELECT * from yourTableName 
WHERE EXTRACT(month from yourDateColumn) >= '1'
AND EXTRACT(day from yourDateColumn) >= '1';

Oracle EXTRACT documentaion

可能的相关问题:

Compare only day and month with date field in mysql

SQL Filter Out Specific Month, Day, and Time for Any Year

【讨论】:

    猜你喜欢
    • 2015-06-11
    • 2014-05-05
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 2018-04-18
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多