Sql 无法从表中截断日期

Sql 无法从表中截断日期,sql,oracle,Sql,Oracle,以下查询返回: select logical_date from logical_date; 4/24/2016 在使用TRUNC()时,我得到 逻辑日期只提供日期而不提供时间

以下查询返回:

select logical_date from logical_date;    
4/24/2016
在使用TRUNC()时,我得到


逻辑日期只提供日期而不提供时间date始终具有日期和时间组件-有时客户端界面将设置为仅显示部分数据(即仅显示日期组件)

NLS\U日期格式决定日期的格式。您可以通过查询找到当前格式:

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

这将输出:

24-APR-2016 00:00:00

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

NLS\U日期格式决定日期的格式。您可以通过查询找到当前格式:

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

这将输出:

24-APR-2016 00:00:00

最好的使用方法是jarlh在这样的评论中建议的

SELECT TRUNC(logical_date) from logical_date
SELECT TRUNC((select logical_date from logical_date)) as logical_date 
FROM DUAL;
但是如果你真的想用你想要的方式使用它,那么就用这样的东西

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

最好的使用方法是jarlh在这样的评论中建议的

SELECT TRUNC(logical_date) from logical_date
SELECT TRUNC((select logical_date from logical_date)) as logical_date 
FROM DUAL;
但是如果你真的想用你想要的方式使用它,那么就用这样的东西

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

从逻辑日期中选择TRUNC(逻辑日期)
?为什么子查询?为什么不直接从表中选择截断的日期呢?你的专栏确实有时间,即使是午夜和/或你的客户没有显示。这受您的NLS_日期_格式的影响,该格式已在的答案中提到。我不确定您期望的结果是什么。如果您有一个名为
logical\u date
的表,其中只有一条记录包含一个名为
logical\u date
的列,那么为什么您必须截断?为什么这不只是表中的一个日期(即已被截断)?
从logical_date中选择TRUNC(logical_date)
?为什么子查询?为什么不直接从表中选择截断的日期呢?你的专栏确实有时间,即使是午夜和/或你的客户没有显示。这受您的NLS_日期_格式的影响,该格式已在的答案中提到。我不确定您期望的结果是什么。如果您有一个名为
logical\u date
的表,其中只有一条记录包含一个名为
logical\u date
的列,那么为什么您必须截断?为什么这不只是表中的一个日期(即已被截断)?