【发布时间】:2019-09-19 18:26:31
【问题描述】:
在我的交易表中有 id Number(11),name Varchar2(25),transactiondate number(22)。
需要编写 SQL 查询来获取交易详情。 transactiondate 应该以日期和时间格式返回,而不是数字。
transaction table
ID Name transactiondate
1 AAA 2458010
2 BBB 2458351
3 CCC 2458712
当我执行以下查询时,我得到了以下结果
Select * from transaction where transactiondate <= TOCHAR(todate('2019/09/17 00:00:00', 'YYYY/MM/DD hh24:mi:ss') , 'J');
ID Name transactiondate
1 AAA 2458010
2 BBB 2458351
当我尝试执行以下查询时出现查询语法错误
Select name, convert(datetime, convert(varchar(10), transactiondate)) as txndateformat
from transaction;
期望查询必须以日期格式而不是数字形式返回名称和交易日期。
当我执行以下查询时,我得到了以下结果
Desc transaction;
Name Null? Type
Id Not Null Number(19)
Name Not Null VarChar2(100)
transactiondate Not Null Number(22)
【问题讨论】:
-
你觉得
2456702代表的是哪个日期? -
Oracle没有
datetime,你确定你用的是Oracle吗? -
到底为什么要将时间戳值存储在
number列中?这真是个坏主意。如果要存储日期和时间值,请使用定义为timestamp的列。 -
Oracle 具有“儒略日期”格式 - 将日期存储为数字。它不包括时间戳。
SELECT TO_DATE(2456702,'J') FROM dual;2014 年 2 月 13 日返回