admin / 05.03.2018

Timestamp Converter

.

MySQL FROM_UNIXTIME() function

Не буду тянуть, собственно, вот сам инструмент. Пользуйтесь, сколько нужно. Если где-то разместите ссылку на него, то буду премного благодарен.

Конвертирование TimeStamp → обычная дата

Прямо сейчас, во время загрузки этой страницы, Unix Time Stamp равен 1529090606.

Введите число Unix TimeStamp:

  Конвертировать в дату | Текущая дата | Очистить

Дата: не известно

Внимание! В качестве временного ориентира в моем скрипте используется часовой пояс Москвы (МСК, Europe/Moscow, UTC +4). Обязательно учитывайте это, если вам нужна предельная точность в отображаемом времени.

Не понимаете, зачем это нужно? Тогда немного теории.

Этот инструмент нужен для того, что бы перевести дату из формата Unix TimeStamp в понятную человеку дату и наоборот.

Что же такое Unix время и для чего его используют? Что бы понять, для чего это используется, начну с общего понятия, что же такое Unix время.

Unix время (или TimeStamp, что в переводе на русский означает «отметка времени» и имеет тот же смысл) — это количество секунд, прошедших с 1 января 1970 года. То есть Unix TimeStamp на момент 01.01.1970 00:00:00 было равно 0. Через 2 минуты (120 секунд) Unix-время было равно уже 120. Например, сутками позже (02.01.1970 00:00:00) Unix время было равно уже 86400, так как прошло 60*60*24=86400 секунд. Сейчас Unix Time Stamp равно уже 1529090606 и число постоянно растет, так как секунды постоянно тикают.

Но зачем им пользоваться? Все дело в том, что Unix TimeStamp удобно использовать для хранения и манипуляции датой при программировании. Не буду вдаваться в подробности, но если вкратце то, что число намного удобнее считать и сравнивать, чем строку с «левыми» символами. Именно поэтому большинство разработчиков используют именно Unix TimeStamp для работы с датой в своих проектах и в базе данных мы часто в поле `date` видим одно какое-то очень большое число, совсем не похожее на дату.

Как раз тут вам и пригодится этот инструмент. С его помощью вы сможете с легкостью перевести это «большое число из базы данных» в человекопонятную дату. Кроме этого, вы сможете даже сделать наоборот и превратить любую дату в Unix TimeStamp. Вот такими возможностями и наделен этот конвертер.

Проблема 2038 года

Как я уже и говорил, число Unix TimeStamp с каждой секундой становится больше на 1. Рано или поздно должен наступить предел этого числа и будет это как раз в 2038 году. Все дело в том, что максимальным числом в распространенных в начале 21 века 32-битных операционных системах является 231. Именно этого числа и достигнет Unix TimeStamp в 2038 году.

→ А решение это проблемы уже найдено. Для того, что бы в 2038 году сайты не перестали корректно учитывать время, достаточно пользоваться 64-битной операционный системой на хостинге/VDS/выделенном сервере, а не 32-битной. С активно растущими мощностями компьютеров и уменьшением их стоимости все идет к тому, что к 2038 году подавляющее большинство услуг в сфере предоставления пространства под сайт будут предоставляться на основе 64-битных ОС. Кстати, в 64-битной системе подобная проблема не коснется нас как минимум 292 млрд лет, чего вполне достаточно для того, что бы считать проблему 2038 года решенной.

  • CURDATE(), CURTIME() и NOW() Первая функция возвращает текущую дату, вторая — текущее время, а третья — текущую дату и время. Сравните: Функции CURDATE() и NOW() удобно использовать для добавления в базу данных записей, использующих текущее время. В нашем магазине все поставки и продажи используют текущее время. Поэтому для добавления записей о поставах, и продажах удобно использовать функцию CURDATE(). Например, пусть в наш магазин пришел товар, давайте добавим информацию об этом в таблицу Поставка (incoming): Если бы мы хранили дату поставки с типом datatime, то нам больше подошла бы функция NOW().
  • ADDDATE(date, INTERVAL value) Функция возвращает дату date, к которой прибавлено значение value. Значение value может быть отрицательным, тогда итоговая дата уменьшится. Давайте посмотрим, когда наши поставщики делали поставки товара: Предположим, мы ошиблись при вводе даты для первого поставщика, давайте уменьшим его дату на одни сутки: В качестве значения value могут выступать не только дни, но и недели (WEEK), месяцы (MONTH), кварталы (QUARTER) и годы (YEAR). Давайте для пример уменьшим дату поставки для второго поставщика на 1 неделю: В нашей таблице Поставки (incoming) мы использовали для столбца Дата поставки (date_incoming) тип date. Как вы помните из урока 2, этот тип данных предназначен для хранения только даты. А вот если бы мы использовали тип datatime, то у нас отображалась бы не только дата, но и время. Тогда мы могли бы использовать функцию ADDDATE и для времени. В качестве значения value в этом случае могут выступать секунды (SECOND), минуты (MINUTE), часы (HOUR) и их комбинации:
    минуты и секунды (MINUTE_SECOND),
    часы, минуты и секунды (HOUR_SECOND),
    часы и минуты (HOUR_MINUTE),
    дни, часы, минуты и секунды (DAY_SECOND),
    дни, часы и минуты (DAY_MINUTE),
    дни и часы (DAY_HOUR),
    года и месяцы (YEAR_MONTH).
    Например, давайте к дате 15 апреля 2011 года две минуты первого прибавим 2 часа 45 минут:
  • SUBDATE(date, INTERVAL value) функция идентична предыдущей, но производит операцию вычитания, а не сложения.

  • PERIOD_ADD(period, n) функция добавляет n месяцев к значению даты period. Нюанс: значение даты должно быть представлено в формате YYYYMM. Давайте к февралю 2011 (201102) прибавим 2 месяца:
  • TIMESTAMPADD(interval, n, date) функция добавляет к дате date временной интервал n, значения которого задаются параметром interval. Возможные значения параметра interval:

    FRAC_SECOND — микросекунды
    SECOND — секунды
    MINUTE — минуты
    HOUR — часы
    DAY — дни
    WEEK — недели
    MONTH — месяцы
    QUARTER — кварталы
    YEAR — годы

  • TIMEDIFF(date1, date2) вычисляет разницу в часах, минутах и секундах между двумя датами.
  • DATEDIFF(date1, date2) вычисляет разницу в днях между двумя датами. Например, мы хотим узнать, как давно поставщик ‘Вильямс’ (id=1) поставлял нам товар:
  • PERIOD_DIFF(period1, period2) функция вычисляет разницу в месяцах между двумя датами, представленными в формате YYYYMM. Давайте узнаем разницу между январем 2010 и августом 2011:
  • TIMESTAMPDIFF(interval, date1, date2) функция вычисляет разницу между датами date2 и date1 в единицах, указанных в параметре interval. Возможные значения параметра interval:

    FRAC_SECOND — микросекунды
    SECOND — секунды
    MINUTE — минуты
    HOUR — часы
    DAY — дни
    WEEK — недели
    MONTH — месяцы
    QUARTER — кварталы
    YEAR — годы

  • SUBTIME(date, time) функция вычитает из времени date время time:
  • DATE(datetime) возвращает дату, отсекая время. Например:
  • TIME(datetime) возвращает время, отсекая дату. Например:
  • TIMESTAMP(date) функция принимает дату date и возвращает полный вариант со временем. Например:
  • DAY(date) и DAYOFMONTH(date) функции-синонимы, возвращают из даты порядковый номер дня месяца:
  • DAYNAME(date), DAYOFWEEK(date) и WEEKDAY(date) функции возвращают день недели, первая — его название, вторая — номер дня недели (отсчет от 1 — воскресенье до 7 — суббота), третья — номер дня недели (отсчет от 0 — понедельник, до 6 — воскресенье:
  • WEEK(date), WEEKOFYEAR(datetime) обе функции возвращают номер недели в году, первая для типа date, а вторая — для типа datetime, у первой неделя начинается с воскресенья, у второй — с понедельника:
  • MONTH(date) и MONTHNAME(date) обе функции возвращают значения месяца.

    Mysql FROM_UNIXTIME как UTC

    Первая — его числовое значение (от 1 до 12), вторая — название месяца:

  • QUARTER(date) функция возвращает значение квартала года (от 1 до 4):
  • YEAR(date) функция возвращает значение года (от 1000 до 9999):
  • DAYOFYEAR(date) возвращает порядковый номер дня в году (от 1 до 366):
  • HOUR(datetime) возвращает значение часа для времени (от 0 до 23):
  • MINUTE(datetime) возвращает значение минут для времени (от 0 до 59):
  • SECOND(datetime) возвращает значение секунд для времени (от 0 до 59):
  • EXTRACT(type FROM date) возвращает часть date определяемую параметром type:
  • TO_DAYS(date) и FROM_DAYS(n) взаимообратные функции. Первая преобразует дату в количество дней, прошедших с нулевого года. Вторая, наоборот, принимает число дней, прошедших с нулевого года и преобразует их в дату:
  • UNIX_TIMESTAMP(date) и FROM_UNIXTIME(n) взаимообратные функции. Первая преобразует дату в количество секунд, прошедших с 1 января 1970 года. Вторая, наоборот, принимает число секунд, с 1 января 1970 года и преобразует их в дату:
  • TIME_TO_SEC(time) и SEC_TO_TIME(n) взаимообратные функции. Первая преобразует время в количество секунд, прошедших от начала суток. Вторая, наоборот, принимает число секунд с начала суток и преобразует их во время:
  • MAKEDATE(year, n) функция принимает год и номер дня в году и преобразует их в дату:
  • Я думал, что это может быть полезно:

    Есть три места, где часовой пояс может быть установлен в MySQL:

    В файле «my.cnf» в разделе [mysqld]

    Переменная @@ global.time_zone

    Чтобы узнать, для какого значения они установлены:

    Чтобы установить для него значение, используйте один:

    (Использование названных часовых поясов, таких как «Европа / Хельсинки», означает, что вы должны правильно заполнить таблицу часового пояса.)

    Имейте в виду, что является смещением. — часовой пояс (имеет два смещения), а — это время, соответствующее конкретному смещению.

    @@ session.time_zone переменная

    Чтобы установить его, используйте один:

    Оба могут вернуть SYSTEM, что означает, что они используют часовой пояс, указанный в my.cnf.

    Чтобы названия часовых поясов работали, вы должны настроить свои информационные таблицы часовых поясов, которые необходимо заполнить: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Я также упоминаю, как заполнять эти таблицы в этом ответе .

    Чтобы получить текущее смещение часового пояса как

    Он вернется в 02:00:00, если ваш часовой пояс равен +2: 00.

    Работа с датой и временем в MySQL+PHP

    Чтобы получить текущую временную метку UNIX:

    Чтобы получить столбец временной метки как временную метку UNIX

    Чтобы получить столбец datetime UTC как временную метку UNIX

    Примечание. Изменение часового пояса не изменит хранимое время datetime или timestamp , но покажет другое время для существующих столбцов временной метки, поскольку они внутренне хранятся в виде временных меток UTC и внешне отображаются в текущем часовом поясе MySQL.

    Я сделал чит-коды здесь: Должен ли MySQL установить часовой пояс в UTC?

    FILED UNDER : IT

    Submit a Comment

    Must be required * marked fields.

    :*
    :*