2017-01-03 6 views
0

Ich weiß, dass ich wie Intervall hinzufügen:Wie Intervall von Wochen hinzufügen PostgreSQL mit 9.3

Select current_date + interval '4 weeks' 

Mein Problem ist, dass die 4 nicht konstant, sondern ein Wert aus der Spalte ist.

so in meinem Fall habe ich diese Situation:

id requestdate lt_weeks 
    1 2016-06-01  5 
    2 2016-06-12  4 
    3 2016-06-12  NULL 
    4 2016-06-12  4 

Ich brauche requestdate + Intervall von lt_weeks Wert zu tun.

Ich kann die richtige Syntax für eine solche Operation nicht finden.

Die Abfrage

select requestdate + interval lt_weeks 'weeks' 
from table_1 

nicht funktioniert es sagt Syntaxfehler in der Nähe von lt_weeks

Wie kann ich das tun?

Antwort

1

können Sie multiplizieren:

Select current_date + coalesce(lt_weeks, 0) * interval '1 week' 

Ein "Intervall" ist eine bona fide Art Daten in Postgres, so dass Sie Arithmetik auf sie verwenden können.

+0

wie wird es funktionieren, wenn lt_weeks null ist? Ich werde es als coalesce (lt_weeks, 0) setzen, aber ich bin mir nicht sicher, es wird tun, was ich erwarte es zu tun und das Datum zu lassen, wie es ist. – Johnathan

+0

@ Johnathan. . . Die ursprüngliche Formulierung hätte "NULL" zurückgegeben, aber ein 'coalesce()' behebt das leicht. –

0

Die von Ihnen beschriebene Syntax funktioniert nur für String-Konstanten.

Try this:

SELECT requestdate, requestdate + (lt_weeks||' weeks')::interval 
    FROM table_1; 
Verwandte Themen