2010-08-05 9 views
1

J'ai 2 lignes dans une colonne, l'une me donne la date julienne (nombre de jours depuis le 1er janvier 1970, ce jour étant 1), et la deuxième colonne est le nombre de minutes passées minuit du jour actuel (pourquoi cela a été fait de cette façon, je n'en ai aucune idée).création d'horodatage à partir des colonnes de postgres

Je voudrais obtenir ma requête sql pour créer un horodatage sur ces deux colonnes. Si j'avais accès aux données à l'avance, je pourrais faire quelque chose comme SELECT timestamp '1970-01-01 00:00:00' + INTERVAL 'X DAYS' + INTERVAL 'Y MINUTES' AS my_time FROM mytable, mais comme X et Y sont des membres réels de la table que j'interroge, ce n'est pas si simple.

quelqu'un a des suggestions?

essentiellement, je cherche l'équivalent solution [juridique]:

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

je peux obtenir mon code côté serveur pour le faire pour moi, mais je l'aimerais si je pouvais construire en ma requête

Répondre

3

Vous pouvez construire les chaînes d'intervalle, puis les jeter au type 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

parfait. C'est exactement ce que je voulais. Je pourrais aussi essayer de convertir les jours en secondes, puis ajouter les minutes et créer un horodatage à partir de cela. Je pense que c'est "6 et une demi-douzaine" cependant. merci pour l'aide. –

0

Sans recours à la substitution de chaîne ou concaténation:

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