Вставте поточну дату у форматі дати та часу mySQL


97

У мене проблеми з правильним вставленням дати в базу даних.

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

Я використовую цей формат, і він лунає правильно, однак, коли вставляю

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

здається, це не працює успішно, і час залишається 00:00:00 Якщо ви знайшли рішення, яке було б чудовим, дякую.


2
Dateposted - це формат дати та часу.
CCates 02.03.12

Відповіді:


222

Якщо ви хочете зберегти поточний час, просто використовуйте функції MYSQL.

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

Якщо вам потрібно використовувати PHP для цього, сформулюйте його, Y-m-d H:i:sтому спробуйте

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

21
Але він використовуватиме локаль / часовий пояс сервера MySQL. Якщо U має Apache / PHP і MySQL на різних серверах, а часовий пояс встановлений неправильно, на одному з них U матиме різні значення.
Джефф_Алієфсон

3
@Jeff_Alieffson має рацію. Використання UTC_TIMESTAMP()( dev.mysql.com/doc/refman/5.5/en/… ) є кращим замістьNOW()
Еяз

Я спробував те саме, але я отримую 0000-00-00 00:00:00, і мій тип даних - дата і час. будь-яка допомога в цьому?
user9437856

Було б чудово використовувати PDO замість mysql_query (), чи не так?
DaWe



6

NOW()використовується для вставки поточної дати та часу в таблицю MySQL. Усі поля з типами даних DATETIME, DATE, TIME & TIMESTAMPдобре працюють з цією функцією.

РРРР-ММ-ДД ЧЧ: мм: СС

Демонстрація:

Наступний код показує використання NOW()

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

5

встановіть typeстовпець з іменем datepostedяк DATETIMEі запустіть такий запит:

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


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
Ласкаво просимо до Stack Overflow! Хороші відповіді пояснюють , а також надають код. Подумайте про оновлення своєї відповіді, щоб включити пояснення щодо того, як працює цей код, і чому це найкращий варіант.
Ajean

1

Якщо ви передаєте дату з PHP, ви можете використовувати будь-який формат, використовуючи STR_TO_DATE()функцію mysql. Нехай conseder ви вставляєте дату за допомогою HTML-форми

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

Це datepostedмає бути dateтип mysql . або mysql will додає 00:00:00,
у деяких випадках вам краще вставити дату та час разом у БД, щоб ви могли робити обчислення за годинами та секундами. ().

$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

Найкращий спосіб зробити це простіше та ефективніше:

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

Тепер, коли ви вставляєте рядок у таблицю, ви можете пропустити це поле ( time_updated), оскільки воно буде заповнено поточним часом як значення за замовчуванням


0

Просто використовуйте свій часовий пояс:

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

0

$ date = дата ('Ymd H: i: s'); з типом: 'datetime' для мене спрацював дуже добре, оскільки я хотів надрукувати цілу дату та позначку часу ..

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


-1

Я вважаю, вам потрібно трохи змінити свій код, як показано нижче, поряд із типом поданої бази даних.

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

Сподіваюся, буде працювати чудово.


-2

використовуй це

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

а потім у MYSQL зробіть

type=varchar

тоді дата та час будуть успішно вставлені


ваша перша функція така ж, як і в запитанні. А решта цієї відповіді не вимагає повторного відкриття 5-річного питання. Поясніть, будь ласка, чому ви вважаєте, що ваше рішення краще, ніж те, що було опубліковано 5 років тому.
Matthew Ciaramitaro

тому що в старому запитанні не пояснювати тип даних
vikas pandey

-5

Спробуйте це

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

Це встановить jQuery datepicker. Питання було про вставлення в базу даних MySQL.
Teepeemm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.