sql - Oracle SQL - 两个日期之间的变量

标签 sql oracle

我不明白为什么这段代码不起作用。这有点倒退,这可能会让我感到困惑。

SELECT * FROM 
(  
 SELECT   
 TO_CHAR(FTPRITIN.start_date, 'DD-MON-YY') start_date,
 TO_CHAR(FTPRITIN.end_date, 'DD-MON-YY') end_date 
 FROM ftpritin 
)
WHERE :VARIABLE BETWEEN start_date AND end_date

我也尝试过

SELECT * FROM 
(  
 SELECT   
 TO_CHAR(FTPRITIN.start_date, 'DD-MON-YY') start_date,
 TO_CHAR(FTPRITIN.end_date, 'DD-MON-YY') end_date 
 FROM ftpritin 
)
WHERE start_date > :VARIABLE AND end_date < :VARIABLE

但是好像不行。查询运行但获取的数据完全超出范围。

我需要的是获取变量落在 start_date 和 end_date 之间的数据行。有任何想法吗?任何帮助深表感谢。

回答

仅供引用 - 对于那些想知道为什么这么简单的问题如此困难的人 - 或者对于那些有类似问题的人......

该字段是TIMESTAMP,而不是日期字段。我通过运行发现了这一点

DESC table_name

然后我只是做了一个快速的 substr to_date 来修复它

to_date(substr(start_date, 1, 9))

这允许我按日期过滤

WHERE to_date(substr(start_date, 1, 9)) <= to_date(:VARIABLE, 'DD-MON-YY')...

谢谢大家的帮助。

(少于 10 次代表,所以我无法回答我自己的帖子)

最佳答案

您的日期格式顺序错误。但是,为什么你不能这样做:

SELECT * 
FROM ftpritin 
WHERE start_date > :VARIABLE AND end_date < :VARIABLE

其中 :VARIABLE 是日期/日期时间?或者,如果它必须是字符串:

SELECT * 
FROM ftpritin 
WHERE start_date > to_date(:VARIABLE, <right format goes here>) AND
      end_date < to_date(:VARIABLE, <right format goes here>)

关于sql - Oracle SQL - 两个日期之间的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18662451/

相关文章:

php - 查询错误得不到数字

oracle - 在另一个存储过程中定义 Oracle 过程的语法是什么?

database - Oracle Partition by ID 和 subpartition by DATE with interval

java - 查找多列之间的第二低值

替换后的 MySQL ROW_COUNT

python - 查询存储在 MySQL 中的多级 JSON 对象

mysql字符串连接返回0

oracle - 从数据库查询二进制数据的最佳实践有哪些?

java - 方法耗时太长

SQL:是否可以根据 'group by'函数的结果来 'like'?