仅选择日期时间

时间:2016-08-25 08:30:51

标签: sql oracle

如果我这样做:

SELECT PRESERV_STARTED
FROM HARVESTED_L;

我会得到像:

这样的价值观
23-12-1999 00:00:00
21-03-2000 22:01:37
...

等等。 (PRESERV_STARTED的类型为DATE

我想要的只是选择时间部分的日期,时间不是00:00:00,以便我可以省略它们。 有很多关于解决方案的信息,说我可以做类似的事情:

select cast(AttDate as time) [time]
from yourtable

对于旧版本的sql server:

select convert(char(5), AttDate, 108) [time]
from yourtable

还有其他建议:

SELECT CONVERT(VARCHAR(8),GETDATE(),108)

我在其他一些人中尝试了所有这些,但没有运气。 所以我的问题是,有一个日期:23-12-1999 00:00:00,我该如何选择时间部分?

对我来说最直观的是(与我发现的提案相混合)就像是:

SELECT CONVERT(VARCHAR(8), GETDATE(PRESERV_STARTED), 108) AS timePortion
FROM HARVESTED_L;

我从此代码中收到错误,说"Missing expression"。事实上,这是我从大多数尝试中得到的错误。

我正在使用Oracle SQL Developer version 4.1.1.19

2 个答案:

答案 0 :(得分:3)

在Oracle中,您只需格式化日期(时间)即可:

 position: fixed;
  bottom: 0;

答案 1 :(得分:2)

如果我理解正确,您只想选择日期列的时间部分不是00:00:00的行。你不必为了做到这一点而得到时间。您可以使用TRUNC函数(默认情况下)返回截断时间部分的日期。这是一个例子:

SQL> select * from t;

        ID D
---------- -------------------
         1 2016-01-01 00:00:00
         2 2016-01-01 00:01:00
         3 2016-01-01 00:01:23

3 rows selected.

SQL> select * from t where d <> trunc(d);

        ID D
---------- -------------------
         2 2016-01-01 00:01:00
         3 2016-01-01 00:01:23

2 rows selected.
相关问题