2012-03-02 13 views
61

Mam problemy z poprawnym wprowadzeniem daty do mojej bazy danych.Wstawianie bieżącej daty w formacie datetime mySQL

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

używam tego formatu, a to odbija się poprawnie, jednak kiedy wstawić

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

nie wydaje się, aby skutecznie działać, a czas pozostaje 00:00: 00 Jeśli mógłbyś znaleźć rozwiązanie, które byłoby wspaniałe, dziękuję.

+0

Jakiego rodzaju jest "dateposted" ? –

+1

Dateposted to format daty i godziny. – CCates

Odpowiedz

154

Jeśli szukasz miejsca do przechowywania aktualnego czasu wystarczy użyć funkcji MySQL.

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

Jeśli trzeba użyć PHP to zrobić, format to Y-m-d H:i:s więc spróbuj

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

Ale będzie używać lokalny/strefę czasową serwera MySQL. Jeśli masz Apache/PHP i MySQL na różnych serwerach, a strefa czasowa jest niepoprawna w jednym z nich, to będziesz miał różne wartości. –

+2

@Jeff_Alieffson ma rację. Używanie 'UTC_TIMESTAMP()' (https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_utc-timestamp) jest preferowane zamiast 'NOW()' – Ejaz

1

"datetime" oczekuje, że data zostanie sformatowany tak: YYYY-MM-DD HH: MM: SS

tak sformatować datę takiego podczas wkładania.

+0

Więc zrobiłbym datę ("RRRR/MM/DD HH: MM: SS", czas()) ;? – CCates

+0

Nie? używaj myślników (-), nie ukośników (/). –

+0

OK, dziękuję, mam to. – CCates

27

Spróbuj zamiast

$date = date('Y-m-d H:i:s'); 
5

NOW() można wstawić bieżącą datę i czas w tabeli MySQL. Wszystkie pola z typami danych DATETIME, DATE, TIME & TIMESTAMP działają dobrze z tą funkcją.

YYYY-MM-DD HH: MM: SS

Demonstracja:

Poniższy kod przedstawia wykorzystanie NOW()

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

można użyć CURRENT_TIMESTAMP, funkcji mysql

1

zestaw type kolumny o nazwie dateposted jako DATETIME i uruchom następujące zapytanie:

INSERT INTO table (`dateposted`) VALUES (CURRENT_TIMESTAMP) 
0
 <?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 przepełnić stos! Dobre odpowiedzi * wyjaśnij * oraz podaj kod. Rozważ zaktualizowanie odpowiedzi, aby objaśnić, jak działa ten kod i dlaczego jest najlepszym rozwiązaniem. – Ajean

0

wierzę, trzeba zmienić swój kod trochę jak następuje wraz z bazą danych złożonego typu.

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

Hope, zadziała idealnie.

0

Jeśli przekazujesz datę z PHP, możesz użyć dowolnego formatu przy użyciu funkcji mysql STR_TO_DATE(). Niech conseder jesteś datę wstawienie poprzez formularz html

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

dateposted powinny być mysql date typu. lub mysql doda 00:00:00
w niektórych przypadkach Lepiej wstaw datę i czas do DB, aby można było wykonywać 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')" ; 
-4

Spróbuj

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

Najlepszym sposobem, aby łatwiej i efektywne to:

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

Teraz, kiedy wstawić wiersz do tabeli, można pominąć to pole (time_updated), ponieważ zostanie wypełniony 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"); 
-1

użycie tego

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

a następnie w MySQL zrobić

type=varchar

następnie data i godzina zostaną pomyślnie wstawiony

+0

Twoja pierwsza funkcja jest taka sama jak użyta w pytaniu. Reszta tej odpowiedzi nie gwarantuje ponownego otwarcia pięcioletniego pytania. Wyjaśnij, dlaczego uważasz, że twoje rozwiązanie jest lepsze niż te, które zostały opublikowane 5 lat temu. –

+0

ponieważ w starym pytaniu nie wyjaśnia się typu danych –

+0

po wybraniu DATETIME tej funkcji przechowuj 0000000, więc ..... –