Insertar la fecha actual en formato de fecha y hora mySQL


97

Tengo problemas para insertar correctamente la fecha en mi base de datos.

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

Utilizo este formato y, sin embargo, se repite correctamente cuando inserto

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

no parece funcionar correctamente, y el tiempo sigue siendo 00:00:00. Si pudiera encontrar la solución sería genial, gracias.


2
Dateposted es el formato de fecha y hora.
CCates

Respuestas:


222

Si está buscando almacenar la hora actual, simplemente use las funciones de MYSQL.

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

Si necesita usar PHP para hacerlo, formatee, Y-m-d H:i:sasí que intente

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

21
Pero usará la configuración regional / zona horaria del servidor MySQL. Si U tiene Apache / PHP y MySQL en diferentes servidores y la zona horaria configurada incorrectamente en uno de ellos, tendrá valores diferentes.
Jeff_Alieffson

3
@Jeff_Alieffson tiene razón. Se prefiere usar UTC_TIMESTAMP()( dev.mysql.com/doc/refman/5.5/en/… ) en lugar deNOW()
Ejaz

Intenté lo mismo pero obtengo 0000-00-00 00:00:00 y mi tipo de datos es datetime. alguna ayuda en esto?
user9437856

Sería genial usar PDO en lugar de mysql_query (), ¿no?
DaWe



6

NOW()se utiliza para insertar la fecha y hora actuales en la tabla MySQL. Todos los campos con tipos de datos DATETIME, DATE, TIME & TIMESTAMPfuncionan bien con esta función.

AAAA-MM-DD HH: mm: SS

Demostración:

El siguiente código muestra el uso de NOW()

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

5

establezca la typecolumna denominada datepostedcomo DATETIMEy ejecute la siguiente consulta:

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

1

" datetime " espera que la fecha tenga el siguiente formato: AAAA-MM-DD HH: MM: SS

así que formatee su fecha así cuando la inserte.


Entonces, haría la fecha ("AAAA / MM / DD HH: MM: SS", hora ()) ;?
CCates

¿No? use guiones (-) no barras (/).
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
¡Bienvenido a Stack Overflow! Las buenas respuestas explican y proporcionan código. Considere actualizar su respuesta para incluir una explicación sobre cómo funciona este código y por qué es la mejor opción.
Ajean

1

Si pasa la fecha desde PHP, puede usar cualquier formato usando la STR_TO_DATE()función mysql. Deje que conste que está insertando la fecha a través del formulario html

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

El dateposteddebería haber mysql datetipo. o mysql agregará 00:00:00
en algún caso. Es mejor que inserte la fecha y la hora juntas en la base de datos para que pueda hacer cálculos con horas y segundos. ().

$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 mejor manera de hacerlo más fácil y eficiente es esta:

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

Ahora, cuando inserta una fila en la tabla, puede omitir este campo ( time_updated) ya que se completará con la hora actual como valor predeterminado


0

Úselo con su zona horaria:

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

0

$ fecha = fecha ('Ymd H: i: s'); con el tipo: 'fecha y hora' funcionó muy bien para mí, ya que quería imprimir la fecha y la marca de tiempo completas.

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


-1

Creo que necesita cambiar su código un poco como sigue junto con el tipo de archivo de su base de datos.

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

Esperanza, funcionará perfectamente.


-2

utilizar este

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

y luego en MYSQL hacer

type=varchar

entonces la fecha y la hora se insertarán correctamente


su primera función es la misma que se utilizó en la pregunta. Y el resto de esta respuesta no justifica reabrir una pregunta de 5 años. Explique por qué cree que su solución es mejor que las que se publicaron hace 5 años.
Matthew Ciaramitaro

porque en la pregunta anterior no se explica el tipo de datos
vikas pandey

-5

Prueba esto

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

Esto establecerá un selector de fecha de jQuery. La pregunta era sobre la inserción en una base de datos MySQL.
Teepeemm
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.