如果我这样做:
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
答案 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.