2017-02-13 3 views
0

ich diese INSERT-Abfrage haben:Postgres-Extrakt() Jahr nicht innerhalb eines Einsatzes arbeiten

INSERT INTO passation 
VALUES 
(default,0,0,0,0,SELECT extract(YEAR FROM now()),'Nouvelle Passation','Téléphonique',now(),'Normale',0) 

Aber das Jahr nicht funktioniert, ich weiß nicht, warum, bitte, da helfen, allein, es funktioniert:

SELECT extract(YEAR FROM now()) 

Dies ist der Postgres-Fehler:

ERROR: syntax error at or near "SELECT" 
LINE 2: ...default,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,SELECT ext... 
                  ^

********** Erreur ********** 

ERROR: syntax error at or near "SELECT" 
État SQL :42601 
Caractère : 82 

habe ich das Jahr in eine Variable zu setzen haben?

+1

'INSERT INTO passation wählen Sie Standard, 0,0,0,0, extrahieren (JAHR VON jetzt()), 'Nouvelle Passation', 'Téléphonique', jetzt(), 'Normale', 0' –

+0

Versucht, aber immer noch habe einen Fehler ... Vielen Dank – user7370387

+0

Was ist 'default'? – McNets

Antwort

0

Sie SELECT nicht verwenden - verwenden den Ausdruck "as is":

INSERT INTO passation 
VALUES 
(default,0,0,0,0,extract(YEAR FROM now()),'Nouvelle Passation','Téléphonique',now(),'Normale',0)

Online Beispiel: http://rextester.com/NBB7282


Beachten Sie, dass das nicht angegeben wird Zielspalten gelten als schlechter Codierungsstil. Etwas wie:

INSERT INTO passation (id, col1, col2, ....) 
values .... 

ist besser.


Anscheinend versuchen Sie auch, die Wochennummer in einer anderen Spalte zu speichern. Ich würde das nicht tun. Speichern Sie einfach den Wert now() in einer einzigen Spalte. Auf diese Weise speichern Sie die vollständigen Informationen, die Sie dann später, Jahr, Monat, Tag, Sekunde oder was auch immer Sie wollen, extrahieren können.

+0

Vielen Dank, ok über Ihre Bemerkung, aber ich muss ein altes Programm kopieren, das bereits so entworfen wurde, und es funktioniert gut (Wochenzahlen, Jahre getrennt), so dass ich alte SQL-Abfragen kopieren kann – user7370387

0

die SELECT aus der INSERT Anweisung entfernen:

INSERT INTO passation 
VALUES (
    DEFAULT, 
    0, 
    0, 
    0, 
    0, 
    extract(YEAR FROM now()), 
    'Nouvelle Passation', 
    'Téléphonique', 
    now(), 
    'Normale', 
    0 
); 
+0

Dann wie bekomme ich das Jahr? – user7370387

+0

Ich muss auch einfügen: SELECT extrahieren (WOCHE VON jetzt()); – user7370387

+0

Ich dachte, ich wäre klar. Ich habe die Antwort erweitert. –

Verwandte Themen