怎么样从数据库中获得毫秒 [A]9i以上版本,有一个timestamp类型获得毫秒,如 SQL>select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ssxff') time1, to_char(current_timestamp) time2 from dual; TIME1 TIME2 ----------------------------- ---------------------------------------------------------------- 2003-10-24 10:48:45.656000 24-OCT-03 10.48.45.656000 AM +08:00 可以看到,毫秒在to_char中对应的是FF。 8i以上版本可以创建一个如下的java函数 SQL>create or replace and compile java source named "MyTimestamp" as import java.lang.String; import java.sql.Timestamp; public class MyTimestamp { public static String getTimestamp() { return(new Timestamp(System.currentTimeMillis())).toString(); } }; SQL>java created. 注:注意java的语法,注意大小写 SQL>create or replace function my_timestamp return varchar2 as language java name 'MyTimestamp.getTimestamp() return java.lang.String'; / SQL>function created. SQL>select my_timestamp,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') ORACLE_TIME from dual; MY_TIMESTAMP ORACLE_TIME ------------------------ ------------------- 2003-03-17 19:15:59.688 2003-03-17 19:15:59 如果只想获得1/100秒(hsecs),还可以利用dbms_utility.get_time
select to_char(sysdate,'YYYY-MM-DD HH24:MM:SS') from dual
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff1') from dual; ... select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff') from dual;select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual=select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ssxff') from dual
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff1') from dual; ... select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff9') from dual;select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual=select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ssxff') from dual
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss') from dual;
你在SQL通过日期格式转成字符串后,就不会出现这种情况了。
[A]9i以上版本,有一个timestamp类型获得毫秒,如
SQL>select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ssxff') time1,
to_char(current_timestamp) time2 from dual; TIME1 TIME2
----------------------------- ----------------------------------------------------------------
2003-10-24 10:48:45.656000 24-OCT-03 10.48.45.656000 AM +08:00
可以看到,毫秒在to_char中对应的是FF。
8i以上版本可以创建一个如下的java函数
SQL>create or replace and compile
java source
named "MyTimestamp"
as
import java.lang.String;
import java.sql.Timestamp; public class MyTimestamp
{
public static String getTimestamp()
{
return(new Timestamp(System.currentTimeMillis())).toString();
}
};
SQL>java created.
注:注意java的语法,注意大小写
SQL>create or replace function my_timestamp return varchar2
as language java
name 'MyTimestamp.getTimestamp() return java.lang.String';
/
SQL>function created.
SQL>select my_timestamp,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') ORACLE_TIME from dual;
MY_TIMESTAMP ORACLE_TIME
------------------------ -------------------
2003-03-17 19:15:59.688 2003-03-17 19:15:59
如果只想获得1/100秒(hsecs),还可以利用dbms_utility.get_time
...
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff') from dual;select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual=select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ssxff') from dual
...
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff9') from dual;select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual=select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ssxff') from dual