2012-03-28 19 views
40

Sto cercando di approfondire una domanda che ho chiesto ieri, dove volevo sapere come interrogare una data in un formato diverso. Ma ora sto cercando di fare un inserto usando questo metodo (vedi sotto), ma non riesco a farlo funzionare. Ho controllato il manuale ma non è adatto ai principianti!Formati data MySQL - difficoltà Inserimento di una data

INSERT INTO custorder VALUES ('Kevin','yes'), STR_TO_DATE('1-01-2012', '%d-%m-%Y'); 
+2

Posizionamento errato di virgolette singole " – Baba

+1

Niente a che vedere con PHP. – Flukey

+1

è stato il voto di 1 perché ho inserito un tag php ... mi dispiace. era perché sto usando le variabili php .. non stavo pensando! – Phil

risposta

89

Mettere la data tra apici e spostare la parentesi (dopo la 'yes') fino alla fine:

INSERT INTO custorder 
    VALUES ('Kevin', 'yes' , STR_TO_DATE('1-01-2012', '%d-%m-%Y')) ; 
         ^         ^
---parenthesis removed--|    and added here ------| 

Ma si può sempre utilizzare date senza STR_TO_DATE() funzione, basta usare la (Ymd) '20120101' o nel formato '2012-01-01'. Controllare la documentazione di MySQL: Date and Time Literals

INSERT INTO custorder 
    VALUES ('Kevin', 'yes', '2012-01-01') ; 
+0

Grazie per avermi segnalato il capitolo Data e ora. Ora capisco quando inserisco 20120101 o "20120101" nel campo data MySQL lo riconosce. Ho pensato che fosse la magia di PHP o un problema tecnico. – Marecky

9

Sembra che non hai incapsulato la stringa correttamente. Prova questo:

INSERT INTO custorder VALUES ('Kevin','yes'), STR_TO_DATE('1-01-2012', '%d-%m-%Y'); 

In alternativa, è possibile effettuare le seguenti operazioni:

INSERT INTO custorder VALUES ('Kevin','yes'), '2012-01-01'; 

io non sono sicuro che quanto sopra SQL è valida, tuttavia, e si consiglia di spostare la parte data nel parentesi. Se riesci a fornire l'errore esatto che stai ricevendo, potrei essere in grado di aiutarti più direttamente con il problema.

4

Il formato della data per la query di inserimento MySQL è YYYY-MM-DD

esempio:

INSERT INTO table_name (date_column) VALUE ('YYYY-MM-DD'); 
0

Un add-on per le risposte precedenti da quando mi sono imbattuto in questa preoccupazione:

Se davvero si vuole inserisci qualcosa come 24-May-2005 nella colonna DATE, potresti fare qualcosa del genere:

INSERT INTO someTable(Empid,Date_Joined) 
VALUES 
    ('S710',STR_TO_DATE('24-May-2005', '%d-%M-%Y')); 

Nella query precedente si prega di notare che se è May (vale a dire: il mese in lettere) il formato dovrebbe essere %M.

NOTA: Ho provato questo con l'ultima versione di MySQL 8.0 e funziona!