plsql日期到毫秒数

plsql日期到毫秒数,plsql,Plsql,在PLSQL中是否可以将日期转换为毫秒数 我试过了 select to_number(TO_CHAR(sysdate, 'yyyymmddhh24miss')) * (24 * 60 * 60 * 1000) from dual; 但我得到1743604888943174400000 这与java GetTime方法不同 正如swmcdonnell所说,你的问题有点复杂: 但是你有一个理解上的问题。我确实将您的查询分为三列 SELECT TO_CHAR (SYSDATE, 'yyyymmdd

在PLSQL中是否可以将日期转换为毫秒数

我试过了

select to_number(TO_CHAR(sysdate, 'yyyymmddhh24miss')) * (24 * 60 * 60 * 1000) from dual;
但我得到1743604888943174400000

这与java GetTime方法不同

正如swmcdonnell所说,你的问题有点复杂:

但是你有一个理解上的问题。我确实将您的查询分为三列

SELECT TO_CHAR (SYSDATE, 'yyyymmddhh24miss'), -- Here we convert our sysdate into a 'string'
       TO_NUMBER (TO_CHAR (SYSDATE, 'yyyymmddhh24miss')), -- this will output the resulting string as number - it will look the same as the 1st column
       TO_NUMBER (TO_CHAR (SYSDATE, 'yyyymmddhh24miss')) * (24 * 60 * 60 * 1000) -- here you calculated 20180613150101 * 24 * 60... i think that's not what you want to do
  FROM DUAL;
这没有道理。 如果需要“总毫秒数”,则必须:

使用当前时间戳而不是sysdate 将yyyy年乘以365天*24小时*60分钟*60秒*1000毫秒 将一年中的日期DDD乘以24小时*60分钟*60秒*1000毫秒 乘以小时*60分钟*60秒*1000毫秒 乘以分钟*60秒*1000毫秒 将第二个乘以1000毫秒 添加ms 这将导致如下结果:

SELECT to_number(TO_CHAR (CURRENT_TIMESTAMP, 'yyyy')) * 365 * 24 * 60 * 60 * 1000
     + to_number(TO_CHAR (CURRENT_TIMESTAMP, 'DDD')) * 24 * 60 * 60 * 1000
     + to_number(TO_CHAR (CURRENT_TIMESTAMP, 'HH24')) * 60 * 60 * 1000
     + to_number(TO_CHAR (CURRENT_TIMESTAMP, 'mi')) * 60 * 1000
     + to_number(TO_CHAR (CURRENT_TIMESTAMP, 'ss')) * 1000
     + to_number(TO_CHAR (CURRENT_TIMESTAMP, 'FF'))
  FROM DUAL;
。。但是你打算用它做什么呢?我不懂Java,但时间戳不应该显示为间隔。这类似于oracle中的interval或C中的timespan。

从dual中选择TO_NUMBERTO_CHARSYSDATE,'yyyyymmddhmiss'| _numberSUBSTRTO_CHAR CURRENT_TIMESTAMP,'FF',0,2; 答案就在这里:可能的重复