2017-03-01 6 views
0

私はMySQLからPostgresに移行しています。私はDateTime値(明らかにPostgresのタイムスタンプ)をとり、最後の四半期の時間の値を決定する必要があります。 私は両方の環境で解決策を持っていますが、よりコンパクトで優雅なPostgresソリューションがあるかどうかは疑問です。MySQLからPostgresへ:最後の四半期の時間

select date(current_timestamp) + date_part('hour',cast(current_timestamp as timestamp)) * interval '1 hour' + floor(date_part('minute',cast(current_timestamp as timestamp))/15) * 15 * interval '1 minute' as last_quarter_hour; 

すべての提案は大歓迎です。

select cast(now() as date) + interval hour(now()) hour + interval (floor(minute(now())/15) * 15) minute as last_quarter_hour; 

はここに私のPostgresのアプローチです: はここに私のMySQLのアプローチです。

答えて

0

ビット:確かに

select 
    date_trunc('hour', current_timestamp) + 
    date_part('minute', current_timestamp)::int/15 * interval '15 minute' as last_quarter_hour 
+0

!ありがとうございました!! – user5883982

0

コードは少なくないかもしれませんが、これは少し直感的で読みやすい解決策です。単純

SELECT CAST(
     SUBSTR(LOCALTIMESTAMP::TEXT, 1, 13)||':'|| CASE 
     WHEN date_part('minute', LOCALTIMESTAMP) < 15 THEN '00' 
     WHEN date_part('minute', LOCALTIMESTAMP) BETWEEN 15 AND 29 THEN '15' 
     WHEN date_part('minute', LOCALTIMESTAMP) BETWEEN 30 AND 44 THEN '30' 
     ELSE '45' END||':00' 
    AS TIMESTAMP) 
関連する問題