Wstaw aktualną datę w formacie datetime mySQL

100

Mam problemy z poprawnym umieszczeniem daty w mojej bazie danych.

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

Używam tego formatu i odbija się on poprawnie, gdy wstawiam

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

wygląda na to, że nie działa pomyślnie, a czas pozostaje 00:00:00. Jeśli mógłbyś znaleźć świetne rozwiązanie, dziękuję.

CCates
źródło
2
Dateposted to format daty i godziny.
CCates

Odpowiedzi:

223

Jeśli chcesz przechowywać aktualny czas, po prostu użyj funkcji MYSQL.

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

Jeśli potrzebujesz do tego użyć PHP, sformatuj go, Y-m-d H:i:swięc spróbuj

$date = date('Y-m-d H:i:s');
mysql_query("INSERT INTO `table` (`dateposted`) VALUES ('$date')");
Aaron W.
źródło
21
Ale użyje ustawień regionalnych / strefy czasowej serwera MySQL. Jeśli masz Apache / PHP i MySQL na różnych serwerach i strefę czasową ustawiono nieprawidłowo na jednym z nich, U będą miały różne wartości.
Jeff_Alieffson
3
@Jeff_Alieffson ma rację. Używanie UTC_TIMESTAMP()( dev.mysql.com/doc/refman/5.5/en/… ) jest preferowane zamiastNOW()
Ejaz
Próbowałem tego samego, ale otrzymuję 0000-00-00 00:00:00, a mój typ danych to data i godzina. jakaś pomoc w tym?
użytkownik9437856
Byłoby wspaniale użyć PDO zamiast mysql_query (), prawda?
Dzień
37

Spróbuj tego zamiast tego

$date = date('Y-m-d H:i:s');
Erik Giberti
źródło
7

możesz użyć CURRENT_TIMESTAMP, funkcji mysql

Diar Selimi
źródło
6

NOW()służy do wstawiania bieżącej daty i godziny w tabeli MySQL. Wszystkie pola z typami danych DATETIME, DATE, TIME & TIMESTAMPdziałają dobrze z tą funkcją.

RRRR-MM-DD HH: mm: SS

Demonstracja:

Poniższy kod przedstawia użycie NOW()

INSERT INTO auto_ins
(MySQL_Function, DateTime, Date, Time, Year, TimeStamp)
VALUES
(“NOW()”, NOW(), NOW(), NOW(), NOW(), NOW());
Gaurang
źródło
5

ustaw typekolumnę o nazwie datepostedas DATETIMEi uruchom następujące zapytanie:

INSERT INTO table (`dateposted`) VALUES (CURRENT_TIMESTAMP)
Abdullah
źródło
2

datetime ” oczekuje, że data zostanie sformatowana w następujący sposób: RRRR-MM-DD GG: MM: SS

więc sformatuj swoją datę w ten sposób podczas wstawiania.

Jan Hančič
źródło
Więc zrobiłbym date ("RRRR / MM / DD HH: MM: SS", time ()) ;?
CCates
1
Nie? użyj myślników (-), a nie ukośników (/).
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
źródło
1
Witamy w Stack Overflow! Dobre odpowiedzi wyjaśniają i dostarczają kod. Rozważ zaktualizowanie swojej odpowiedzi, aby zawierała wyjaśnienie, jak działa ten kod i dlaczego jest to najlepsza opcja.
Ajean
1

Jeśli przekazujesz datę z PHP, możesz użyć dowolnego formatu za pomocą STR_TO_DATE()funkcji mysql. Pozwól consederowi wstawić datę przez formularz html

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

datepostedPowinny być mysql datetypu. lub mysql doda 00:00:00
w niektórych przypadkach Lepiej wstaw datę i czas razem do DB, abyś mógł wykonać obliczenia z godzinami i sekundami. ().

$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
źródło
1

Najlepszym sposobem, aby uczynić to łatwiejszym i wydajnym, jest:

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

Teraz, kiedy wstawisz wiersz do tabeli, możesz pominąć to pole ( time_updated), ponieważ zostanie ono wypełnione bieżącym czasem jako wartością domyślną

Prakash GPz
źródło
0

Po prostu użyj ze swoją strefą czasową:

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

źródło
0

$ data = data ('Ymd H: i: s'); z typem: „datetime” działało bardzo dobrze, ponieważ chciałem wydrukować całą datę i znacznik czasu.

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

Rehan
źródło
0

Zależy to od typu danych ustawionego w tabeli db.

DATETIME (typ danych)

MYSQL
INSERT INTO t1 (dateposted) VALUES ( NOW() )
// This will insert date and time into the col. Do not use quote around the val
PHP
$dt = date('Y-m-d h:i:s');
INSERT INTO t1 (dateposted) VALUES ( '$dt' )
// This will insert date into the col using php var. Wrap with quote.

DATE (typ danych)

MYSQL
INSERT INTO t1 (dateposted) VALUES ( NOW() )
// Yes, you use the same NOW() without the quotes.
// Because your datatype is set to DATE it will insert only the date
PHP
$dt = date('Y-m-d');
INSERT INTO t1 (dateposted) VALUES ( '$dt' )
// This will insert date into the col using php var.

CZAS (typ danych)

MYSQL
INSERT INTO t1 (dateposted) VALUES ( NOW() )
// Yes, you use the same NOW() as well. 
// Because your datatype is set to TIME it will insert only the time
PHP
$dt = date('h:i:s');
INSERT INTO t1 (dateposted) VALUES ( '$dt' )
// This will insert time.
Dexter
źródło
-1

Uważam, że musisz trochę zmienić swój kod, tak jak poniżej, wraz z typem pliku bazy danych.

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

Mam nadzieję, że będzie działać idealnie.

tisuchi
źródło
-3

Użyj tego

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

a następnie w MYSQL

type=varchar

wtedy data i godzina zostaną pomyślnie wstawione

vikas pandey
źródło
Twoja pierwsza funkcja jest taka sama, jak użyta w pytaniu. A reszta tej odpowiedzi nie gwarantuje ponownego otwarcia pytania sprzed 5 lat. Wyjaśnij, dlaczego uważasz, że Twoje rozwiązanie jest lepsze niż te, które zostały opublikowane 5 lat temu.
Matthew Ciaramitaro
ponieważ w starym pytaniu nie wyjaśniam typu danych
vikas pandey
-5

Spróbuj tego

$('#datepicker2').datepicker('setDate', new Date('<?=$value->fecha_final?>')); 
Cristhian Bonilla
źródło
Spowoduje to ustawienie Datepicker jQuery. Pytanie dotyczyło wstawienia do bazy danych MySQL.
Teepeemm