2010-08-05 116 views
1

我在一列中有兩行,一個給我的是Julian日期(1970年1月1日以來的天數,當天爲1),第二列是過去的分鐘數當天的午夜(爲什麼這樣做,我不知道)。在postgres中創建列的時間戳

我想讓我的sql查詢創建這兩列中的時間戳。

如果我提前訪問數據,我可以做類似SELECT timestamp '1970-01-01 00:00:00' + INTERVAL 'X DAYS' + INTERVAL 'Y MINUTES' AS my_time FROM mytable的事情,但是因爲X和Y是我查詢的表的實際成員,所以並不那麼簡單。

有沒有人有什麼建議?

基本上,我正在尋找同等[法律]解決方案:

SELECT timestamp '1970-01-01 00:00:00' + INTERVAL 'my_col1 DAYS' + INTERVAL 'my_col2 MINUTES' AS my_time FROm mytable 

我可以得到我的服務器端代碼來爲我做的,但我會喜歡它,如果我可以建立成我的查詢。

回答

3

您可以構建間隔字符串,然後將它們轉換爲interval類型:

SELECT 
    timestamp '1970-01-01 00:00:00' + 
    cast(my_col1 || ' DAYS' AS interval) + 
    cast(my_col2 || ' MINUTES' AS interval) my_time FROM mytable 
+0

完美。這正是我想要的。我也可以嘗試將日期轉換爲秒,然後添加分鐘並創建一個時間戳。儘管如此,我認爲它是「6和半打」。 感謝您的幫助。 – 2010-08-05 18:31:47

0

沒有求助於字符串替換或連接:

SELECT 
    timestamp '1970-01-01 00:00:00' + 
    my_col1 * interval '1 DAY' + 
    my_col2 * interval '1 MINUTE' FROM mytable