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”
答案 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;