Обновлено: 23 декабря, 2021
Вычитание даты от текущей
Следующий код позволяет вычислить разницу в днях между текущей датой, и датой в поле date_start таблицы tbl_sites
SELECT TO_DAYS(CURDATE())-TO_DAYS(date_start) FROM tbl_sites
Добавление текущей даты/времени при вставке записи
Для сохранения в таблице времени и даты добавления новой записи, необходимо создать новое поле таблицы в Time, где время будет храниться в Unix формате, либо поле TIMESTAMP, в котором время будет храниться в виде: “2013-09-17 15:00:00”.
Для первого случая (поле Time) для сохранения времени добавления записи используется функция time(). Код в данном случае будет выглядеть таким образом:
mysql_query(“INSERT INTO `my_table` (`pole1`,`pole2`,`pole3`,`time`) VALUES (‘string1′,’string2′,’string3’,'”.time().”‘)”);
Для второго случая (поле TIMESTAMP) используется параметр CURRENT_TIMESTAMP (текущее время). Соответственно код будет таким:
mysql_query(“INSERT INTO `my_table` (`pole1`,`pole2`,`pole3`,`time`) VALUES (‘string1′,’string2′,’string3’,CURRENT_TIMESTAMP)”);
Следует отметить, что при дальнейшей работе с этими полями, для вывода их значений в удобном виде, либо для подсчета разницы с каким либо значением времени, необходимо будет эти значения преобразовывать. Например, для того чтобы перевести значение TIMESTAMP в формат Unix-времени, необходимо воспользоваться процедурой strtotime(). Пример данного преобразования выглядит следующим образом (считаем количество секунд, прошедших с времени добавления записи в БД):
/*получаем данные из БД, а именно – время сообщения с ID равным 1, в формате TIMESTAMP */ $sql=mysql_query(“SELECT `time` FROM `my_table` WHERE `id` = ‘1’ LIMIT 1”); $array=mysql_fetch_array($sql); $my_time=$array[‘time’]; /*преобразуем время в удобный формат Unix time */ $my_time = strtotime($my_time); echo $my_time(); $time_offset = time()-$my_time();
Группировка записей по дням, месяцам
Если необходимо, например, посчитать количество звонков по дням, или месяцам (в случаях когда одна запись – звонок), можно сделать следующим образом:
Считаем количество звонков по дням в период последние 30 дней:
SELECT DATE_FORMAT(date_time,”%d.%m.%Y”), count(*) FROM tbl_calls GROUP BY DATE_FORMAT(date_time,”%d.%m.%Y”) ORDER BY `date_time` DESC LIMIT 0,30
Считаем количество звонков по месяцам:
SELECT DATE_FORMAT(date_time,”%m.%Y”), count(*) FROM tbl_calls GROUP BY DATE_FORMAT(date_time,”%m.%Y”) ORDER BY `date_time`
Формат дат для функции FORMAT()
| %a | Сокращенное название дня недели на латинице (Sun to Sat) |
| %b | Сокращенное название месяца на латинице (Jan to Dec) |
| %c | Число месяца (0 to 12) |
| %D | День месяца в виде числового значения, за которым следует суффикс на латинице (1st, 2nd, 3rd, …) |
| %d | День месяца в виде числового значения (01 to 31) |
| %e | День месяца в виде числового значения (0 to 31) |
| %f | Миллисекунды (000000 to 999999) |
| %H | Часы (00 to 23) |
| %h | Час (00 to 12) |
| %I | Час (00 to 12) |
| %i | Minutes (00 to 59) |
| %j | Нумерация дня в году (001 to 366) |
| %k | Час (0 to 23) |
| %l | Час (1 to 12) |
| %M | Полное название месяца на латинице (January – December) |
| %m | Название месяца как числовое значение (от 00 до 12) |
| %p | AM или PM |
| %r | Время в 12-часовом формате AM или PM (hh:mm:ss AM/PM) |
| %S | Секунды (00 to 59) |
| %s | Секунды (00 to 59) |
| %T | Время в 24-часовом формате (hh:mm:ss) |
| %U | Неделя, где воскресенье-первый день недели (с 00 до 53) |
| %u | Неделя, где понедельник-первый день недели (с 00 до 53) |
| %V | Неделя, где воскресенье-первый день недели (с 01 по 53). Используется с %X |
| %v | Неделя, где понедельник-первый день недели (с 01 по 53). Используется с %X |
| %W | Название дня недели полностью на латинице (Sunday – Saturday) |
| %w | День недели, где воскресенье=0 и суббота=6 |
| %X | Год для недели, где воскресенье является первым днем недели. Используется с %V |
| %x | Год для недели, где понедельник является первым днем недели. Используется с %V |
| %Y | Год как числовое, 4-значное значение |
| %y | Год как числовое, 2-значное значение |


(6 оценок, среднее: 4,83 из 5)