Insira a data atual no formato de data e hora mySQL

97

Estou tendo problemas para inserir a data corretamente em meu banco de dados.

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

Eu uso este formato, e ele ecoa corretamente, no entanto, quando eu insiro

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

não parece funcionar com sucesso, e o tempo continua sendo 00:00:00 Se você pudesse encontrar a solução que seria ótimo, obrigado.

CCates
fonte
2
Postado por data é o formato de data e hora.
CCates

Respostas:

222

Se você está procurando armazenar a hora atual, use as funções do MYSQL.

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

Se você precisa usar PHP para fazer isso, formate-o Y-m-d H:i:spara tentar

$date = date('Y-m-d H:i:s');
mysql_query("INSERT INTO `table` (`dateposted`) VALUES ('$date')");
Aaron W.
fonte
21
Mas ele usará o local / fuso horário do servidor MySQL. Se você tiver Apache / PHP e MySQL em servidores diferentes e o fuso horário estiver incorreto em um deles, você terá valores diferentes.
Jeff_Alieffson
3
@Jeff_Alieffson está certo. Usar UTC_TIMESTAMP()( dev.mysql.com/doc/refman/5.5/en/… ) é preferível em vez deNOW()
Ejaz
Eu tentei mesmo, mas estou recebendo 0000-00-00 00:00:00 e meu tipo de dados é datetime. alguma ajuda nisso?
user9437856
Seria ótimo usar PDO em vez de mysql_query (), não é?
DaWe
36

Em vez disso, tente

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

você pode usar CURRENT_TIMESTAMP, função mysql

Diar Selimi
fonte
6

NOW()é usado para inserir a data e hora atuais na tabela MySQL. Todos os campos com tipos de dados DATETIME, DATE, TIME & TIMESTAMPfuncionam bem com esta função.

AAAA-MM-DD HH: mm: SS

Demonstração:

O código a seguir mostra o uso de NOW()

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

defina a typecoluna nomeada datepostedcomo DATETIMEe execute a seguinte consulta:

INSERT INTO table (`dateposted`) VALUES (CURRENT_TIMESTAMP)
Abdullah
fonte
1

" datetime " espera que a data seja formatada assim: AAAA-MM-DD HH: MM: SS

então formate sua data assim quando você estiver inserindo.

Jan Hančič
fonte
Então, eu faria date ("AAAA / MM / DD HH: MM: SS", hora ()) ;?
CCates
Não? use traços (-) não 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">

PratapSingh Hajari
fonte
1
Bem-vindo ao Stack Overflow! Boas respostas explicam e fornecem código. Considere atualizar sua resposta para incluir uma explicação sobre como esse código funciona e por que é a melhor opção.
Ajean,
1

Se você passar a data do PHP, você pode usar qualquer formato usando a STR_TO_DATE()função mysql. Deixe que você esteja inserindo a data via formulário html

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

O dateposteddeve ser do datetipo mysql . ou o mysql irá adicionar 00:00:00
em alguns casos. É melhor inserir data e hora juntas no banco de dados para que você possa fazer cálculos com horas e 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')"  ;  
Salem
fonte
1

A melhor maneira de torná-lo mais fácil e eficiente é:

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

Agora, ao inserir uma linha na tabela, você pode pular este campo ( time_updated), pois ele será preenchido com a hora atual como valor padrão

Prakash GPz
fonte
0

Basta usar com seu fuso horário:

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

fonte
0

$ data = data ('Ymd H: i: s'); com o tipo: 'datetime' funcionou muito bem para mim, pois eu queria imprimir a data e o carimbo de data / hora inteiros.

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

Rehan
fonte
-1

Eu acredito, você precisa mudar seu código um pouco como segue junto com seu tipo de arquivo de banco de dados.

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

Espero que funcione perfeitamente.

tisuchi
fonte
-2

usa isto

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

e então em MYSQL faça

type=varchar

então a data e a hora serão inseridas com sucesso

vikas pandey
fonte
sua primeira função é a mesma usada na pergunta. E o resto desta resposta não justifica reabrir uma pergunta de 5 anos. Explique por que você acha que sua solução é melhor do que aquelas postadas há 5 anos.
Matthew Ciaramitaro,
porque na pergunta antiga não explica sobre o tipo de dados
vikas pandey
-5

Tente isto

$('#datepicker2').datepicker('setDate', new Date('<?=$value->fecha_final?>')); 
Cristhian Bonilla
fonte
Isso definirá um datepicker jQuery. A questão era sobre como inserir em um banco de dados MySQL.
Teepeemm