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


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

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ń



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

5

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

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

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.


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


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

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ą


0

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

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

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


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.

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


-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


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

Spowoduje to ustawienie Datepicker jQuery. Pytanie dotyczyło wstawienia do bazy danych MySQL.
Teepeemm
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.