web-dev-qa-db-fra.com

Comment ajouter un nombre variable d'heures à une date dans PostgreSQL?

Apparemment , PostgreSQL n'a pas DATEADD, car vous pouvez simplement utiliser le + ou - les opérateurs.

J'ai besoin d'ajouter un certain nombre d'heures à une date, ce qui se fait comme ceci:

date_field + interval '8.25 hour' 

Ce qui est génial, mais j'ai besoin du nombre d'heures pour provenir d'un champ de la table. Serait quelque chose comme ça:

date_field + interval start_time 'hour' 

Je ne trouve nulle part comment faire ça. Est-ce réellement impossible?

Cela ne me dérange pas de recourir à de vilains hacks comme prendre la valeur du champ et diviser par 3600, multiplier par 86400. Quoi que je doive faire, mais je n'ai pas trouvé de moyen de le faire non plus.

27
Daniel Magliola

Puisque vous voulez ajouter heures, cela devrait plutôt être:

SELECT date_field + interval '1h' * start_time

start_time peut être n'importe quelle valeur numérique.

60

Trouvé la réponse, dans une autre SO question :

date + interval '1' minute * FLOOR(start_time * 60)

J'espère que cela aide n'importe qui

6
Daniel Magliola

Celui qui a travaillé pour moi est

SELECT date_field + interval '1' HOUR * start_time

start_time peut être n'importe quelle valeur numérique.

4
Willie Z

Si quelqu'un veut ajouter un horodatage,

select time '05:00' - interval '2 hours'    
0
Rohil Patel