example-STR_TO_DATE-function — php mysql examples | w3resource

Преобразование дат в PHP для DATETIME в SQL

У меня есть форум на PHP, который принимает дату, как в форме dd/mm/yyyy hh:mm:ss . Однако мне нужно вставить его для SQL как DATETIME в формате как yyyy-mm-dd hh:mm:ss . Как я могу преобразовать эти данные?

Формат даты недействителен: dd/mm/yyyy hh:mm:ss . Вероятно, вы имеете в виду d/m/YH:i:s

Если у вас версия 5.3+, есть безопасный способ конвертировать дату в другой формат. Вот пример:

$timestamp = '31/05/2001 12:22:56'; $timestamp = DateTime::createFromFormat('d/m/YH:i:s', $timestamp); echo $timestamp->format('Ymd H:i:s'); 

или если вам нравится более процедурный способ:

$timestamp = '31/05/2001 12:22:56'; $timestamp = date_create_from_format('d/m/YH:i:s', $timestamp); echo date_format($timestamp, 'Ymd H:i:s'); 

Будьте осторожны с предыдущими предложениями. Некоторые из них совершенно ошибочны, а другие могут привести к ошибкам.

Вы можете использовать strtotime и дату, чтобы переработать формат.

$new_date = date( "Ymd H:i:s", strtotime( $old_date ) ); 

Это означает, что ваша старая дата ( dd/mm/yyyy hh:mm:ss ) преобразует ее в временную метку unix, которая затем может использоваться с функцией даты php для форматирования даты до нужного формата.

Два из нескольких возможных способов:

  1. Преобразуйте в код, а затем передайте преобразованное значение в mysql: $mysqldate = date( ‘Ymd H:i:s’, $phpdate );
  2. Пусть mysql выполняет работу с помощью встроенных функций: $query = «UPDATE table SET datetimefield = FROM_UNIXTIME($phpdate) . «;

если у вас есть datetime avaialable from from from above above format, тогда вам просто нужно использовать следующую функцию.

function localToMysql($dateTime) < $date_chunks = explode('/', $dateTime); $time_chunks = explode(' ', $date_chunks[2]); $final_format = $time_chunks[0] . "-" . $date_chunks[1] . "-" . $date_chunks[0] . " " . $time_chunks[1];

Источник

От PHP к MySQL сквозь время

Порой нам необходимо переводить время из одного формата в другой. Например, нужно время из PHP-скрипта сохранить в базе данных MySQL. Всё бы ничего… но они по-разному работают со временем. И новички порой строят огромные костыли, чтобы, как им кажется, упростить свою жизнь.

Для этой статьи я возьму в пример метки времени PHP и формат времени MySQL.

PHP работает с метками времени UNIX. То есть время представляется в виде количества секунд, прошедших с начала дня 1 января 1970 года. И на момент написания статьи — 23:25 17 июня 2015 года — PHP показал вот такое время — 1434573224. А вот в MySQL время хранится в другом формате (типе данных). Я предпочитаю тип DATETIME. Упомянутая выше дата выглядела бы в таблице MySQL в поле с типом DATETIME так: 2015-06-17 23:25:00.

Читайте также:  Php поиск дат регулярные выражения

Перевод времени из PHP в MySQL

Ну так как же нам перевести время из PHP-скрипта в MySQL? Очень просто. Для начала, давайте решим, откуда в вашем скрипте берется какая-либо метка времени? Допустим, время регистрации пользователя является временем работы скрипта. В этом случае нам достаточно использовать встроенную в PHP функцию time(). Она и вернет текущую метку времени UNIX. А если вам нужно сохранить в базе данных дату, которую пользователь ввел в HTML-форму? Тут задача немного сложнее. Но она сама по себе несложная.

)\.(\d)\.(\d)$/'; $result = preg_match( $pattern, $sUserDate, $matches ); if ( $result && !empty( $matches ) ) < $day = $matches[1]; $month = $matches[2]; $year = $matches[3]; >$time = mktime( 0, 0, 0, $month, $day, $year ); // Получим метку времени 1435006800 ?>

И как теперь сохранить это в базу? Да еще и в формате типа данных MySQL DATETIME… Легко!

Нувотивсёбырь Задача решена! Проверьте 🙂

Перевести время из MySQL в PHP…

…могло бы оказаться сложнее, но нет. Это так же просто. Нет, пожалуй, это еще проще.

Скажу вам больше. Если функции UNIX_TIMESTAMP() не передавать вообще никаких аргументов, результат будет тем же. Вам вернется текущая метка времени UNIX. И делайте с ним в своем скрипте теперь то, что хотите.

Перевод времени из PHP в MySQL и из MySQL в PHP оказался делом плёвым. Вообще ерундовым. Я надеюсь, подключаться к своему СУБД вы уже умеете?

Подобные приемы очень часто нужны при написании алгоритмов регистрации и авторизации пользователей, а также просто при работе пользователя с HTML-формами, в которых он вводит дату и еще работает с динамическими списками select.

Источник

Creating a PHP date in the format for a SQL Timestamp insert

PHP date/time FAQ: How do I create a date in the proper format to insert a SQL Timestamp field into a SQL database?

Note: You might not need to create a PHP date

First off, you may not need to create a date in PHP like this. If you’re using plain old PHP and a database like MySQL, you can use the SQL now() function to insert data into a SQL timestamp field like this:

INSERT INTO projects (user_id, name, last_updated, date_created) VALUES (5, 'alvin', now(), now());

I just tested this with PHP and MySQL, and it works fine. So that’s one way to populate a SQL timestamp field in a SQL INSERT query.

Creating a PHP timestamp variable

However, if you want to do this all in PHP (or need to, depending on what framework you're working with), you can get the current date and time in the proper format using just PHP, like this:

If you print this out, your $timestamp field will now contain contents like this:

Читайте также:  Array php получить значение ключа

You can then use this formatted timestamp string in a PHP MySQL insert.

Note: Thanks to the commenters below who suggest using H:i:s instead of G:i:s .

A Drupal 7 SQL INSERT with Timestamp example

Although this isn't a standard off-the-shelf PHP/MySQL INSERT statement, here's what a SQL INSERT query looks like when I use this with Drupal 7:

$project = new stdClass(); $project->user_id = get_user_id(); $project->project_count_type = $form_state['values']['type']; $project->name = $form_state['values']['name']; $project->description = $form_state['values']['description']; # get the current time in the proper format for a sql timestamp field $timestamp = date('Y-m-d H:i:s'); # new drupal 7 style insert $id = db_insert('projects') ->fields(array( 'user_id' => $project->user_id, 'project_count_type' => $project->project_count_type, 'name' => $project->name, 'description' => $project->description, 'last_updated' => $timestamp, 'date_created' => $timestamp )) ->execute();

As you can see in the lines I’ve made bold, I’m inserting my PHP timestamp variable into two SQL fields.

Getting a timestamp for some other date and time

Note that the PHP date function defaults to the current date and time, which is exactly what I need for my purposes here. If you need to create a formatted timestamp field for some other date and time, you can do that something like this:

$timestamp = date('Y-m-d H:i:s', mktime(0, 0, 0, 7, 1, 2000));

Here are some other PHP mktime examples:

$tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y")); $lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y")); $nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);

I pulled those examples from the PHP date page. Please see that page for more information on creating other dates and times (I'm mostly just worried about "now" at this moment).

PHP SQL Timestamp inserts

I hope these timestamp examples have been helpful. As you've seen, you can generally just use the SQL 'NOW()' function to insert into a SQL timestamp field, but if that doesn't work for some reason, you can also create a timestamp field in the proper format using just PHP and the date function.

Источник

MySQL STR_TO_DATE () функция

MySQL STR_TO_DATE () возвращает значение datetime, принимая в качестве аргументов строку и строку определенного формата.

Если значение даты, времени или даты и времени, указанное в виде строки, недопустимо, функция возвращает значение NULL. Спецификаторы формата были описаны в DATE_FORMAT () также для работы с этой функцией.

Синтаксическая диаграмма:

«MySQL

Версия MySQL: 5.6

Видео презентация

Ваш браузер не поддерживает видео HTML5.

Иллюстрированная презентация

«Иллюстрированные

Пример: функция MySQL STR_TO_DATE ()

Следующая инструкция вернет правильную дату из заданной строки 18,05,2009 в соответствии с форматом% d,% m,% Y.

SELECT STR_TO_DATE('18,05,2009','%d,%m,%Y'); 
mysql> SELECT STR_TO_DATE ('18, 05,2009 ','% d,% m,% Y '); + -------------------------------------- + | STR_TO_DATE ('18, 05,2009 ','% d,% m,% Y ') | + -------------------------------------- + | 2009-05-18 | + -------------------------------------- + 1 ряд в наборе (0,00 сек)
         

Getting a valid date from the given string according to the format '%d,%m,%Y':

query('SELECT STR_TO_DATE("18,05,2009","%d,%m,%Y")') as $row) < echo ""; echo ""; echo ""; > ?>
Valid date
" . $row['STR_TO_DATE("18,05,2009","%d,%m,%Y")'] . "
            Valid date    %> catch (Exception ex) < out.println("Can’t connect to database."); >%>   

Пример: функция STR_TO_DATE (), использующая% M% d,% Y

Читайте также:  Джанго не видит css

Следующая инструкция вернет действительную дату из заданной строки 18 мая 2009 года в формате% M% d,% Y.

SELECT STR_TO_DATE('May 18, 2009','%M %d,%Y'); 
mysql> SELECT STR_TO_DATE ('18 мая 2009 г.', '% M% d,% Y'); + ---------------------------------------- + | STR_TO_DATE ('18 мая 2009 г.', '% M% d,% Y') | + ---------------------------------------- + | 2009-05-18 | + ---------------------------------------- + 1 ряд в наборе (0,00 сек)
         

Gettting a valid date from the given string according to the format '%M %d,%Y':

query('SELECT STR_TO_DATE("May 18, 2009","%M %d,%Y")') as $row) < echo ""; echo ""; echo ""; > ?>
Valid date
" . $row['STR_TO_DATE("May 18, 2009","%M %d,%Y")'] . "

Пример: функция STR_TO_DATE () в формате (% m /% d /% Y)

Следующая инструкция вернет правильную дату из заданной строки 18.05.2009 в формате% m /% d /% Y.

SELECT STR_TO_DATE('05/18/2009', '%m/%d/%Y'); 
mysql> SELECT STR_TO_DATE ('05 / 18/2009 ','% m /% d /% Y '); + --------------------------------------- + | STR_TO_DATE ('05 / 18/2009 ','% m /% d /% Y ') | + --------------------------------------- + | 2009-05-18 | + --------------------------------------- + 1 ряд в наборе (0,00 сек)
         

Getting a valid date from the given string according to the format '%m/%d/%Y':

query('SELECT STR_TO_DATE("05/18/2009", "%m/%d/%Y")') as $row) < echo ""; echo ""; echo ""; > ?>
Valid date
" . $row['STR_TO_DATE("05/18/2009", "%m/%d/%Y")'] . "

Пример: функция STR_TO_DATE () с использованием% h:% i:% s

Следующая инструкция вернет правильное время из заданной строки 11:59:59 в соответствии с форматом% h:% i:% s.

SELECT STR_TO_DATE('11:59:59','%h:%i:%s'); 
mysql> SELECT STR_TO_DATE ('11: 59: 59 ','% h:% i:% s '); + ------------------------------------ + | STR_TO_DATE ('11: 59: 59 ','% h:% i:% s ') | + ------------------------------------ + | 11:59:59 | + ------------------------------------ + 1 ряд в наборе (0,00 сек)

Следующая инструкция возвращает NULL, поскольку спецификатор формата% h% i% s (HOUR MINUTE SECOND) несовместим с содержимым строки 11:59:59 (HOUR : MINUTE : SECOND).

SELECT STR_TO_DATE('11:59:59','%h %i %s'); 
mysql> SELECT STR_TO_DATE ('11: 59: 59 ','% h% i% s '); + ------------------------------------ + | STR_TO_DATE ('11: 59: 59 ','% h% i% s ') | + ------------------------------------ + | NULL | + ------------------------------------ + 1 ряд в наборе, 1 предупреждение (0,02 с)

Пример: функция STR_TO_DATE (), использующая% W% D% M% Y% H:% i:% s формат

Следующий оператор вернет действительное значение datetime из заданной строки Понедельник, 15 сентября 2008 г. 22:23:00 в соответствии с форматом% W% D% M% Y% H:% i:% s.

SELECT STR_TO_DATE('Monday 15th September 2008 22:23:00', '%W %D %M %Y %H:%i:%s'); 
mysql> SELECT STR_TO_DATE («Понедельник, 15 сентября 2008 г. 22:23:00», «% W% D% M% Y% H:% i:% s»); + ------------------------------------------------- --------------------------- + | STR_TO_DATE («Понедельник, 15 сентября 2008 г. 22:23:00», «% W% D% M% Y% H:% i:% s») | + ------------------------------------------------- --------------------------- + | 2008-09-15 22:23:00 | + ------------------------------------------------- --------------------------- + 1 ряд в наборе (0,00 сек)

Все функции даты и времени:

Нажмите здесь, чтобы увидеть функции даты и времени MySQL.

Предыдущая: ВТОРАЯ ()
Далее: SUBDATE ()

Источник

Оцените статью