Insérer la date actuelle au format datetime mySQL

97

J'ai des problèmes pour insérer correctement la date dans ma base de données.

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

J'utilise ce format, et il résonne correctement, cependant, quand j'insère

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

cela ne semble pas fonctionner correctement, et le temps reste 00:00:00 Si vous pouviez trouver la solution qui serait géniale, merci.

CCates
la source
2
Dateposted est le format datetime.
CCates

Réponses:

222

Si vous cherchez à stocker l'heure actuelle, utilisez simplement les fonctions de MYSQL.

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

Si vous devez utiliser PHP pour le faire, le formater Y-m-d H:i:salors essayez

$date = date('Y-m-d H:i:s');
mysql_query("INSERT INTO `table` (`dateposted`) VALUES ('$date')");
Aaron W.
la source
21
Mais il utilisera les paramètres régionaux / fuseau horaire du serveur MySQL. Si vous avez Apache / PHP et MySQL sur différents serveurs et que le fuseau horaire est incorrect dans l'un d'entre eux, vous aurez des valeurs différentes.
Jeff_Alieffson
3
@Jeff_Alieffson a raison. L'utilisation de UTC_TIMESTAMP()( dev.mysql.com/doc/refman/5.5/en/… ) est préférable àNOW()
Ejaz
J'ai essayé la même chose mais j'obtiens 0000-00-00 00:00:00 et mon type de données est datetime. une aide à cela?
user9437856
Serait bien d'utiliser PDO au lieu de mysql_query (), non?
Dawe
36

Essayez plutôt ceci

$date = date('Y-m-d H:i:s');
Erik Giberti
la source
6

vous pouvez utiliser CURRENT_TIMESTAMP, fonction mysql

Diar Selimi
la source
6

NOW()est utilisé pour insérer la date et l'heure actuelles dans la table MySQL. Tous les champs avec des types de données DATETIME, DATE, TIME & TIMESTAMPfonctionnent bien avec cette fonction.

AAAA-MM-JJ HH: mm: SS

Manifestation:

Le code suivant montre l'utilisation de NOW()

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

définissez la typecolonne de nommée en datepostedtant que DATETIMEet exécutez la requête suivante:

INSERT INTO table (`dateposted`) VALUES (CURRENT_TIMESTAMP)
Abdullah
la source
1

" datetime " s'attend à ce que la date soit formatée comme suit: AAAA-MM-JJ HH: MM: SS

alors formatez votre date comme ça lorsque vous l'insérez.

Jan Hančič
la source
Donc je ferais date ("AAAA / MM / JJ HH: MM: SS", heure ()) ;?
CCates
Non? utilisez des tirets (-) et non des barres obliques (/).
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">

PratapSingh hajari
la source
1
Bienvenue dans Stack Overflow! Les bonnes réponses expliquent et fournissent du code. Pensez à mettre à jour votre réponse pour inclure une explication sur le fonctionnement de ce code et pourquoi c'est la meilleure option.
Ajean
1

Si vous passez la date de PHP, vous pouvez utiliser n'importe quel format en utilisant la STR_TO_DATE()fonction mysql. Laissez conseder que vous insérez la date via un formulaire html

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

Le dateposteddevrait être de datetype mysql . ou mysql ajoutera 00:00:00
dans certains cas. Vous feriez mieux d'insérer la date et l'heure ensemble dans la base de données afin de pouvoir faire des calculs avec des heures et des secondes. ().

$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')"  ;  
Salem
la source
1

La meilleure façon de le rendre plus simple et efficace est la suivante:

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

Maintenant, lorsque vous insérez une ligne dans le tableau, vous pouvez ignorer ce champ ( time_updated) car il se remplira avec l'heure actuelle comme valeur par défaut

Prakash GPz
la source
0

Utilisez simplement avec votre fuseau horaire:

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

la source
0

$ date = date ('Ymd H: i: s'); avec le type: 'datetime' a très bien fonctionné pour moi car je voulais imprimer la date et l'horodatage entiers.

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

Rehan
la source
-1

Je crois que vous devez changer votre code un peu comme suit avec le type de fichier de votre base de données.

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

Hope, fonctionnera parfaitement.

tisuchi
la source
-2

utilisez ceci

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

puis dans MYSQL faire

type=varchar

puis la date et l'heure seront insérées avec succès

Vikas Pandey
la source
votre première fonction est la même que celle utilisée dans la question. Et le reste de cette réponse ne justifie pas de rouvrir une question vieille de 5 ans. Veuillez expliquer pourquoi vous pensez que votre solution est meilleure que celles qui ont été publiées il y a 5 ans.
Matthew Ciaramitaro
parce que dans la vieille question ne pas expliquer le type de données
vikas pandey
-5

Essaye ça

$('#datepicker2').datepicker('setDate', new Date('<?=$value->fecha_final?>')); 
Cristhian Bonilla
la source
Cela définira un datepicker jQuery. La question portait sur l'insertion dans une base de données MySQL.
Teepeemm