2017-03-01 62 views
0

我有時間戳列:四捨五入時間最近的每小時季度的PostgreSQL

"2017-02-14 05:06:34" 
"2017-01-17 13:55:44" 
"2017-01-17 14:06:14" 
"2017-01-17 22:40:14" 
"2017-01-18 14:23:43" 

,我想回合時間到最近的每小時季度PostgreSQL中。我想更新爲1,2,3,4 quaters

我需要的輸出如下:

"2017-02-14 05:06:34" 1 
"2017-01-17 13:55:44" 4 
"2017-01-17 14:06:14" 1 
"2017-01-17 22:40:14" 3 
"2017-01-18 14:23:43" 2 

我嘗試下面的命令,但它不給我預期:

SELECT CURRENT_TIME(0), 
CASE WHEN EXTRACT(MINUTE FROM CURRENT_TIME(0)) - 30 >= 0 
        THEN CURRENT_TIME(0) + ((60 - EXTRACT(MINUTE FROM CURRENT_TIME(0))) * INTERVAL '1' MINUTE) 
       ELSE CURRENT_TIME(0) - EXTRACT(MINUTE FROM CURRENT_TIME(0)) * INTERVAL '1' MINUTE 
END AS Converted_Time from table1; 

CURRENT_TIME是我的表中的列。

+0

爲什麼' 2017-01-17 22:45:14'變成'2017-01-17 22:40:14'和'2017-01-18 14:11:43'到'2017-01-18 14:23:43 '在預期的產出?你爲什麼在你的查詢中使用'current_Time'而不是你的表的列名? –

回答

0

應使用下列條件的,各個季度的情況:
1. MINUTE FROM CURRENT_TIME(0)) - 15 <= 0
2.0 < MINUTE FROM CURRENT_TIME(0)) - 15 <= 15
3.15 < MINUTE FROM CURRENT_TIME(0)) - 15 <= 30
4. 30 < MINUTE FROM CURRENT_TIME(0)) - 15 <= 45

+0

我收到3條件的錯誤,只有第一個條件工作。錯誤:在「0」處或附近的語法錯誤 線4:當提取(0 user99

+0

我使用下面的查詢:SELECT CURRENT_TIME(0), (CASE WHEN EXTRACT(MINUTE (0 user99

相關問題