日期:2014-05-17  浏览次数:20922 次

oracle Sysdate的问题
各位,小弟遇到一个很郁闷的问题,关于sysdate
我现在有两张表,表里面都有一个字段是date类型,但是在插入数据的时候,一个表里面有时分秒,一个里面没有(说明:我是需要时分秒的),请问该怎么解决,谢谢啦!

------解决方案--------------------
写insert语句时,日期类型字段用 to_date('2011-04-15 13:25:00','yyyy-mm-dd hh24:mi:ss'),
如果是插入当前时间,直接写sysdate应该就可以显示时分秒,如果不行再转换一次试试
to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')
------解决方案--------------------
查询到秒
select to_char(sysdate,'yyyy-MM-DD HH24:MM:SS') from dual
查询到毫秒
SELECT TO_CHAR(systimestamp,'yyyy-MM-DD HH24:MM:SSSSS') from dual

至于你插入的找不到秒,你自己看下那些数据是不是你当下插入的,也许是历史数据,还有表结构,你插入sysdate的时候是否做了时间转化等,如trunc(sysdate,'dd')


------解决方案--------------------
你怎么确定没有时分秒呢
查询语句是什么
------解决方案--------------------
都没有么,还是几条没有?确认是date类型?不是varchar2?
------解决方案--------------------
SQL code
scott@RACDB> create table t( id number(18,0), name varchar2(20), cdate date);

表已创建。

scott@RACDB> insert into t(id,name,cdate) values(1,'luoyoumou1',sysdate);

已创建 1 行。

scott@RACDB> insert into t(id,name,cdate) values(2,'luoyoumou2',to_date('2011-04-15','yyyy-mm-dd'));

已创建 1 行。

-- 上面这条记录的时、分、秒将是:00:00:00,因为你没有指定时、分、秒,所以默认这些部分均为0!

scott@RACDB> insert into t(id,name,cdate) values(3,'luoyoumou3',sysdate);

已创建 1 行。

scott@RACDB> commit;

提交完成。

scott@RACDB> select * from t;

        ID NAME                                     CDATE
---------- ---------------------------------------- -------------------
         1 luoyoumou1                               2011-04-15 22:19:34
         2 luoyoumou2                               2011-04-15 00:00:00
         3 luoyoumou3                               2011-04-15 22:20:40

scott@RACDB> alter session set nls_date_format='yyyy-mm-dd';

会话已更改。

scott@RACDB> select * from t;

        ID NAME                                     CDATE
---------- ---------------------------------------- ----------
         1 luoyoumou1                               2011-04-15
         2 luoyoumou2                               2011-04-15
         3 luoyoumou3                               2011-04-15

------解决方案--------------------
顶15楼的,就是和系统显示参数和插入时候是否进行了to_char之类的操作有关。。
------解决方案--------------------
诡异哦
------解决方案--------------------
楼主一直在确认自己的说的,能不能给点证据啊,把表结构以及插入语句查询语句贴出来一下~ 让大家看看嘛
------解决方案--------------------
探讨

我确定两个表都是date类型,而且都是用的sysdate

------解决方案--------------------
可以使用select trunc(sysdate,'dd') from dual;语句看看效果

------解决方案--------------------
肯定是插入有问题啊