在Oracle SQL中:如何将当前日期和时间插入表格?

27

我写了下面的代码,但它似乎只插入当前日期而不是当前时间。有人知道如何做到这一点吗?

insert into errortable
(dateupdated,table1id)
values
(TO_DATE(sysdate, 'dd/mm/yyyy hh24:mi:ss'),1083);

你怎么知道它只插入当前日期?你是通过查看原始表格还是尝试使用查询来查看的? - brenners1302
是的,它将00:00存储为时间;我通过查看表格进行了确认。想要存储当前日期和当前时间。 - Tikkaty
提示:在Oracle中,当前日期+时间=Sysdate。select sysdate from dual将产生2015-10-05 09:24:40。 - Hotdin Gurning
TO_DATE(sysdate...) 是错误的。sysdate 返回一个日期 - 永远不要使用一个日期去调用 TO_DATE,因为它通常不会给出你期望的结果,而且也没有意义。 - Jeffrey Kemp
2个回答

34

它似乎是这样,因为它打印出来的就是这样。但实际上,您不应该以这种方式编写逻辑。下面是等效的代码:

insert into errortable (dateupdated, table1id)
    values (sysdate, 1083);

将系统日期转换为字符串,然后再转换回日期似乎有些愚蠢。

如果您想查看完整的日期,则可以执行以下操作:

select TO_CHAR(dateupdated, 'YYYY-MM-DD HH24:MI:SS'), table1id
from errortable;

1
谢谢@gordon。你是说sysdate插入应该使用你的方法存储当前日期和当前时间吗? - Tikkaty
1
@Tikkaty...是的,sysdate有一个时间组件。 - Gordon Linoff

-2
您可以尝试以下查询:
INSERT INTO errortable (dateupdated,table1id)
VALUES (to_date(to_char(sysdate,'dd/mon/yyyy hh24:mi:ss'), 'dd/mm/yyyy hh24:mi:ss' ),1083 );

查看它的结果:

SELECT to_char(hire_dateupdated, 'dd/mm/yyyy hh24:mi:ss') 
FROM errortable 
    WHERE table1id = 1083;

4
将sysdate转换为字符串再转回日期是没有意义的。 - miracle173

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接