Oracle中用于获取current_date数据的查询是什么 列end_date类似于以下
module roller(input clk, input rst, input UP, input DOWN, output reg LEDS[3:0]);
reg UP1, DOWN1;
always @(posedge clk or posedge rst)
if (rst) begin
LEDS[3:0] <= 4'b0001;
end
else
begin
UP1 <= UP;
DOWN1 <= DOWN;
if (UP & ~UP1) begin
LEDS[3:0] <= {LEDS[2:0], LEDS[3]};
end
else if (DOWN & ~DOWN1) begin
LEDS[3:0] <= {LEDS[0], LEDS[3:1]};
end
end
endmodule;
就像我正在运行以下查询
end_date
27-10-16 03:35:00.000000000 PM
23-11-16 11:15:00.000000000 AM
02-11-16 03:00:00.000000000 PM
08-11-16 09:00:00.000000000 AM
它正在成功运行,但当我用当前日期替换查询时...它没有给出结果
Select * from table1
where end_date < TO_DATE('2017-04-11 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
有人可以告诉我第二个查询没有给出结果的原因是什么。
答案 0 :(得分:2)
CURRENT_DATE
返回日期。无需使用TO_DATE
。以下查询应该足够了。
Select * from table1
where end_date < current_date;
如果您运行以下查询,您将了解问题所在。年变为0011。
SELECT TO_DATE(current_date, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
请注意CURRENT_DATE
会在会话时区返回当前日期。 SYSDATE
返回为数据库所在的操作系统设置的当前日期和时间。这意味着CURRENT_DATE
和SYSDATE
可以返回不同的结果。您可以查看this
答案 1 :(得分:0)
CURRENT_DATE
已经是DATE
值。如果需要,可以使用to_char
格式化输出。
end_date < CURRENT_DATE
应该做的工作。或者,您可以相应地设置nls参数,以提高可读性。
如果您只比较日期,没有时间戳,则可以使用trunc()
答案 2 :(得分:0)
查询的工作原理如下:
Select * from table1
where trunc(end_date) < trunc(sysdate)
Trunc用于比较两个日期并获取结果。