2010-09-13 3 views
2

Я пытаюсь вставить текущую дату из php-формы в базу данных.php date format

Мой запрос:

$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', 'date()')"; 

Это производит следующее: 0000-00-00 00:00:00 это, очевидно, не так.

Может кто-нибудь порекомендует, как получить это, чтобы отобразить правильную дату/время?

Кроме того, мне это нужно в следующем формате: yyyymmddhhmmss - Возможно ли это? Как я могу это сделать?

Спасибо!

+0

Наиболее универсальным решением всегда является UNIX_TIMESTAMP. Когда вы храните дату в этом формате, вы можете делать с ней что угодно. – fabrik

+0

Это не имеет никакого отношения к вашему вопросу, но очень важно: убедитесь, что вы никогда не вставляете переменные PHP непосредственно в ваш SQL-запрос. Всегда избегайте их использованием * mysql_real_escape_string ($ your_variable) *. – slosd

+0

Привет, Как мне это сделать? На стороне базы данных поле устанавливается в TIMESTAMP. – 109221793

ответ

1

Вы должны использовать РНР функция time() или MySQL, UNIX_TIMESTAMP это int(11) и используется следующим образом:

INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', UNIX_TIMESTAMP -- 

Затем вы создаете визуальную метку времени с php, используя функцию date() .. во время цикла в PHP.

1

Использование SQL NOW() функции:

$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', NOW()"; 
+1

Примечание: Это работает только при правильной настройке схемы таблицы. – fabrik

+0

Конечно - если поле не DATETIME, лучше использовать формат из других ответов. –

0
$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', 'date(dmy)')"; 

или

$time = date('Ymd g:i'); 
$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', " .$time . ")"; 
0
$date = date ('Y-m-d H:i:s'); 
$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', '$date')"; 
+0

Обратите внимание на вопрос OP: «Мне нужно это в следующем формате: yyyymmddhhmmss» – fabrik

+0

при выборе его из БД вы можете преобразовать его в любой формат, который вам нравится – 2010-09-13 11:38:44

+0

Привет, Денис, нужно ли установить поле в моей базе данных на что-то другое, кроме TIMESTAMP, для это работать? Благодаря! – 109221793

0

Обратитесь к руководству PHP относительно использования даты(): http://php.net/manual/en/function.date.php

Так ваши потребности это wou ld будет что-то вроде:

$date = date("YmdHis"); 
$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', '$date')"; 

Также вы можете принять во внимание советы Фабрика. Использование метки времени UNIX, вероятно, является самым надежным способом.

0

Я предполагаю, что ваш столбец date на самом деле имеет тип mysql DATETIME.

$sql3="INSERT INTO orderDetails (compName, package, cost, date) VALUES ('$companyName', '$package', '$cost_record', NOW())"; 

должен это сделать.

Вы можете хранить его в тип DATETIME (вы увидите его как гггг-мм-дд чч: мм: сс), а затем отформатировать его в yyyymmddhhmmss при его выборе из базы данных:

SELECT DATE_FORMAT(date, '%Y%m%d%H%i%s') FROM orderDetails 

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

+0

@fabrik Могу я спросить почему вы добавили '' в мою вторую строку sql, когда она уже была вложена? Я все еще новичок в этом, так что я пропустил какое-то соглашение о форматировании? – Fanis

+0

Хотя он окружен 's, он не анализировался как фрагмент кода. Теперь отредактирован снова, все в порядке. – fabrik