2016-12-28 142 views
0

當我在oracle中使用trunc函數並在oracle developer中運行查詢時,我只從datetime字段獲得日期值。爲例如低於查詢Oracle日期轉換爲Python中的日期時間

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

返回

29-feb-2016 02-oct-2016 

但相同的查詢在python使用並且打印到輸出文件

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時需要是2016-02-29 - 2016-10-02。不知道爲什麼它改變了Python的格式。請幫助正確的解決方案

嘗試使用to_date(min(Transaction_Date),'YYYY-MM-DD')但奇怪的沒有輸出變化。

+0

Oracle中的DATE類型是時間戳,具有字段YEAR,MONTH,DAY,HOUR,MINUTE和SECOND。它只能精確到秒,不具備亞秒級分辨率的能力,這就是爲什麼還有一個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

我認爲對方的回答也有道理,當它是從甲骨文代碼格式的日期值。但對我來說,字符類型就足夠了。因此如下所示使用,並且它們的工作原理相同

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

請勿使用'DD-MM-YY'遮罩;一年使用「YYYY」。甚至不要問爲什麼 - 只需使用「YYYY」。 – mathguy