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.


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')");

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



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());

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)

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.


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">


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')"  ;  

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


0

Utilisez simplement avec votre fuseau horaire:

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

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);


-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.


-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


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?>')); 

Cela définira un datepicker jQuery. La question portait sur l'insertion dans une base de données MySQL.
Teepeemm
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.