2016-08-25 4 views
1

からだけの時間を選択:ようには日付

23-12-1999 00:00:00 
21-03-2000 22:01:37 
... 

そして:

SELECT PRESERV_STARTED 
FROM HARVESTED_L; 

私のような値を取得します。 (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のような日付で、時間部分をどのように選択するのですか?私は"Missing expression"を言って、このコードからエラーを取得する

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

:(私が見つけた案との混合)私にとって最も直感的に来るもの

のようなものです。実際、これは私が試した提案のほとんどから得られるエラーです。

私はあなたが好きしかし、あなただけの日付(時間)をフォーマットできるOracleでのOracle SQL Developerのversion 4.1.1.19

+0

OracleではSqlServer式を使用していますか? – vercelli

+0

SELECT TO_CHAR(SYSDATE、 'HH24:MI:SS' FROM DUAL、sysdateをフィールドに、DUALをテーブル名に変更してください) – BigMike

+0

あなたは何をしたいのか分かりません。列を選択するか、行のサブセットを選択しますか? – Codo

答えて

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. 
3

を使用しています:

SELECT TO_CHAR(preserv_started, 'HH24:MI:SS') 
FROM harvested_l