Inserisci la data corrente nel formato datetime mySQL


97

Ho problemi a inserire correttamente la data nel mio database.

$date = date('m/d/Y h:i:s', time());

Uso questo formato e, tuttavia, risuona correttamente quando inserisco

mysql_query("INSERT INTO table 
(dateposted) 
VALUES ('$date')");

non sembra funzionare correttamente e, il tempo rimane 00:00:00 Se riuscissi a trovare la soluzione sarebbe fantastico, grazie.


2
Dateposted è il formato datetime.
CCates

Risposte:


222

Se stai cercando di memorizzare l'ora corrente, usa le funzioni di MYSQL.

mysql_query("INSERT INTO `table` (`dateposted`) VALUES (now())");

Se hai bisogno di usare PHP per farlo, formattalo Y-m-d H:i:squindi prova

$date = date('Y-m-d H:i:s');
mysql_query("INSERT INTO `table` (`dateposted`) VALUES ('$date')");

21
Ma utilizzerà le impostazioni locali / fuso orario del server MySQL. Se hai Apache / PHP e MySQL su server diversi e il fuso orario è impostato in modo errato in uno di essi, avrai valori diversi.
Jeff_Alieffson

3
@Jeff_Alieffson ha ragione. È preferibile utilizzare UTC_TIMESTAMP()( dev.mysql.com/doc/refman/5.5/en/… ) invece diNOW()
Ejaz

Ho provato lo stesso ma sto ottenendo 0000-00-00 00:00:00 e il mio tipo di dati è datetime. qualche aiuto in questo?
user9437856

Sarebbe bello usare PDO invece di mysql_query (), no?
DaWe



6

NOW()viene utilizzato per inserire la data e l'ora correnti nella tabella MySQL. Tutti i campi con i tipi di dati DATETIME, DATE, TIME & TIMESTAMPfunzionano bene con questa funzione.

AAAA-MM-GG HH: mm: SS

Dimostrazione:

Il codice seguente mostra l'utilizzo di NOW()

INSERT INTO auto_ins
(MySQL_Function, DateTime, Date, Time, Year, TimeStamp)
VALUES
(“NOW()”, NOW(), NOW(), NOW(), NOW(), NOW());

5

imposta la typecolonna of denominata datepostedcome DATETIMEed esegui la seguente query:

INSERT INTO table (`dateposted`) VALUES (CURRENT_TIMESTAMP)

1

" datetime " prevede che la data sia formattata in questo modo: AAAA-MM-GG HH: MM: SS

quindi formatta la tua data in questo modo quando stai inserendo.


Quindi vorrei fare data ("AAAA / MM / GG HH: MM: SS", ora ()) ;?
CCates

No? utilizzare trattini (-) non barre (/).
Jan Hančič

1
     <?php $date= date("Y-m-d");
$time=date("H:m");
$datetime=$date."T".$time;
mysql_query(INSERT INTO table (`dateposted`) VALUES ($datetime));
?>

<form action="form.php" method="get">
<input type="datetime-local" name="date" value="<?php echo $datetime; ?>">
<input type="submit" name="submit" value="submit">


1
Benvenuto in Stack Overflow! Le buone risposte spiegano oltre a fornire il codice. Considera l'idea di aggiornare la tua risposta per includere una spiegazione su come funziona questo codice e perché è l'opzione migliore.
Ajean

1

Se passi la data da PHP puoi usare qualsiasi formato usando la STR_TO_DATE()funzione mysql. Consenti al conseder di inserire la data tramite modulo html

$Tdate = "'".$_POST["Tdate"]."'" ;    //   10/04/2016
$Tdate = "STR_TO_DATE(".$Tdate.", '%d/%m/%Y')"  ;  
mysql_query("INSERT INTO `table` (`dateposted`) VALUES ('$Tdate')");

Il dateposteddovrebbe essere mysql datetipo. oppure mysql aggiungerà 00:00:00
in alcuni casi. È meglio inserire la data e l'ora insieme nel DB in modo da poter eseguire calcoli con ore e secondi. ().

$Tdate=date('Y/m/d H:i:s') ; // this to get current date as text .
$Tdate = "STR_TO_DATE(".$Tdate.", '%d/%m/%Y %H:%i:%s')"  ;  

1

Il modo migliore per renderlo più semplice ed efficiente è questo:

CREATE TABLE table_name (
field1,
..
..
time_updated timestamp default current_timestamp
)

Ora, quando inserisci una riga nella tabella, puoi saltare questo campo ( time_updated) poiché si riempirà con l'ora corrente come valore predefinito


0

Usa solo con il tuo fuso orario:

date_default_timezone_set('Asia/Kolkata');      
$date=date("Y/m/d h:i:sa");

0

$ date = date ('Ymd H: i: s'); con il tipo: 'datetime' ha funzionato molto bene per me perché volevo stampare l'intera data e timestamp ..

$ date = date ('Ymd H: i: s'); $ stmtc-> bindParam (2, $ date);


-1

Credo che sia necessario modificare un po 'il codice come segue insieme al tipo di archivio del database.

mysql_query("INSERT INTO table (`dateposted`) VALUES ($datetime)");

Spero, funzionerà perfettamente.


-2

Usa questo

$date = date('m/d/Y h:i:s', time());

e poi in MYSQL fai

type=varchar

quindi la data e l'ora verranno inserite correttamente


la tua prima funzione è la stessa usata nella domanda. E il resto di questa risposta non garantisce la riapertura di una domanda di 5 anni. Spiega perché pensi che la tua soluzione sia migliore di quelle pubblicate 5 anni fa.
Matteo Ciaramitaro

perché nella vecchia domanda non si spiega il tipo di dati
vikas pandey

-5

Prova questo

$('#datepicker2').datepicker('setDate', new Date('<?=$value->fecha_final?>')); 

Questo imposterà un datepicker jQuery. La domanda riguardava l'inserimento in un database MySQL.
Teepeemm
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.