无法从表中截断日期

时间:2016-02-11 08:56:53

标签: sql oracle

以下查询返回:

select logical_date from logical_date;    
4/24/2016

使用TRUNC()我得

SELECT TRUNC(select logical_date from logical_date) 
FROM DUAL;

ORA-00936: missing expression

logical_date仅提供日期而非时间

2 个答案:

答案 0 :(得分:3)

DATE始终有一个日期和时间组件 - 有时客户端界面将设置为仅显示部分数据(即仅显示日期组件)。

NLS_DATE_FORMAT决定了日期的格式。您可以使用查询找到当前格式:

SELECT VALUE
FROM   NLS_SESSION_PARAMETERS
WHERE  PARAMETER = 'NLS_DATE_FORMAT';

在您的情况下,格式掩码似乎设置为MM/DD/YYYY

您可以使用以下方式更改日期格式:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';

(或您希望使用的任何格式掩码)。

然后你可以做

select logical_date from logical_date;

将输出如下内容:

24-APR-2016 11:22:33

select TRUNC( logical_date ) from logical_date;

将输出:

24-APR-2016 00:00:00

答案 1 :(得分:2)

使用此功能的最佳方式是jarlh在此类评论中提出的建议

SELECT TRUNC(logical_date) from logical_date

但是如果你绝对希望以你想要的方式使用它,那就用这样的东西

SELECT TRUNC((select logical_date from logical_date)) as logical_date 
FROM DUAL;