甲骨文如何检查两个时间字段之间的时间是否不是时间

时间:2018-12-29 16:17:47

标签: sql oracle

Q1-我有一项任务要检查两个日期字段(start_date,end_date)及其时间之间的“时间”是否不重叠 ,我要检查的时间与开始日期和结束日期在同一日期

任何想法或技巧

第二季度-

select 
    extract( hour from
        to_timestamp(
            to_char('04/04/2018 04:05:05','dd/mm/yyyy hh24:mi:ss')
        )
    ) as v_to 
from dual;

返回:

  

ora-01722 无效的号码

我的NLS_TIMESTAMP_FORMAT是“ DD-MON-YYYY HH24:MI:SS”

1 个答案:

答案 0 :(得分:0)

Q1:您可以使用常规比较运算符比较日期,因此要检查给定日期是否属于日期间隔,您需要:

...my_date >= start_date AND my_date <= end_date

或:

...my_date BETWEEN start_date AND end_date

Q2-由于使用TO_CHAR调用而无法使用,该调用期望将日期作为第一个参数(而不是字符串)并返回一个字符串,这对于TO_TIMESTAMP的使用没有好处。

您应该跳过TO_CHAR并以TO_TIMESTAMP开头:

select
    extract( hour from
        to_timestamp('04/04/2018 04:05:05', 'dd/mm/yyyy hh24:mi:ss')
        )
    ) as v_to 
from dual;