2016-12-28 19 views
0

私がtrunc関数をoracleで使用し、oracle developerでクエリを実行すると、datetimeフィールドの日付値のみが取得されます。 Pythonで使用し、出力ファイルOracleの日付はPythonのdatetimeに変換されます

print("start",row[0]) 
print("end",row[1]) 
dateperiod=str(row[0]).strip() + " - " + str(row[1]).strip() 
print("date period :", dateperiod) 

出力

('start', datetime.datetime(2016, 2, 29, 0, 0)) 
('end', datetime.datetime(2016, 10, 2, 0, 0)) 
('date period :', '2016-02-29 00:00:00 - 2016-10-02 00:00:00') 

出力Iに印刷されたクエリ以下の例

Select trunc(min(Transaction_Date)) as StartDate, 
       trunc(Max(Transaction_Date)) as EndDate 
       from table1 

戻り

29-feb-2016 02-oct-2016 

しかし、同じクエリの必要はです。それがなぜPythonでフォーマットを変えるのか不思議です。適切な解決策をお手伝いください

to_date(min(Transaction_Date),'YYYY-MM-DD')を使用して試しましたが、出力が変わっていません。

+0

OracleのDATE型は、フィールドYEAR、MONTH、DAY、HOUR、MINUTE、およびSECONDを持つタイムスタンプです。 2番目の解像度までしか正確ではないので、TIMESTAMPタイプもあります。 –

+0

私はto_charが私の後にあると思います。 to_charを使用してto_dateを置き換えて、日付データ型ではなくなりました。 – kten

答えて

1

ちょうどあなたが望む形式で日付をフォーマット:

dateperiod = "{0:%Y-%m-%d} - {1:%Y-%m-%d}".format(row[0], row[1]) 
0

私はそれがコードでOracleから日付値をフォーマットするときに、他の答えはまた、理にかなっていると思います。しかし、私にとっては、char型で十分です。以下のように使用され、すべて同じになる

to_char(min(Transaction_Date),'DD-MM-YY') as MinDate, 
+0

「DD-MM-YY」マスクを使用しないでください。年には常に「YYYY」を使用してください。理由を尋ねないでください。ちょうど「YYYY」を使用してください。 – mathguy

関連する問題