各位,小弟遇到一个很郁闷的问题,关于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:40scott@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之类的操作有关。。
------解决方案--------------------
诡异哦
------解决方案--------------------
楼主一直在确认自己的说的,能不能给点证据啊,把表结构以及插入语句查询语句贴出来一下~ 让大家看看嘛
------解决方案--------------------
------解决方案--------------------
可以使用select trunc(sysdate,'dd') from dual;语句看看效果
------解决方案--------------------
肯定是插入有问题啊