Последнее обновление
UNIX_TIMESTAMP
Описание
Преобразует значения DATE, DATETIME или TIMESTAMP_NS во временные метки Unix.
Если параметры не указаны, во временную метку преобразуется текущее время.
Если указан аргумент даты и времени, он должен иметь тип DATE, DATETIME или TIMESTAMP_NS.
Правила задания формата описаны в документации функции date_format.
Результат этой функции зависит от часового пояса. Подробнее о часовых поясах см. в разделе Управление часовыми поясами.
Поведение этой функции соответствует функции unix_timestamp в MySQL.
Синтаксис
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(`<date_or_date_expr>`)
UNIX_TIMESTAMP(`<date_or_date_expr>`, `<fmt>`)
Параметры
| Параметр | Описание |
|---|---|
<date_or_date_expr> | Входное значение даты и времени. Поддерживаются типы DATE, DATETIME и TIMESTAMP_NS. |
<fmt> | Строковый параметр, задающий часть даты для преобразования во временную метку. Если этот параметр указан, во временную метку преобразуется только часть, соответствующая формату. |
Возвращаемое значение
Тип возвращаемого значения зависит от входных данных:
- При входном значении
TIMESTAMP_NSвозвращается временная метка типаDECIMALс девятью знаками дробной части. - При входном значении
DATETIMEс ненулевым масштабом или при вызове с<fmt>возвращается временная метка типаDECIMALне более чем с шестью знаками дробной части. - При входном значении
DATEилиDATETIMEс масштабом 0 без<fmt>возвращается временная метка типаINT.
Преобразует входное время в соответствующую временную метку с началом отсчёта 1970-01-01 00:00:00.
- Возвращает null, если какой-либо параметр равен null.
- Возвращает ошибку, если формат некорректен
Примеры
-- Input datetime is the begin datetime
mysql> select unix_timestamp('1970-01-01 00:00:00');
+---------------------------------------+
| unix_timestamp('1970-01-01 00:00:00') |
+---------------------------------------+
| 0 |
+---------------------------------------+
-- Display timestamp of current time
mysql> select unix_timestamp();
+------------------+
| unix_timestamp() |
+------------------+
| 1753933330 |
+------------------+
-- Input a datetime to display its timestamp
mysql> select unix_timestamp('2007-11-30 10:30:19');
+---------------------------------------+
| unix_timestamp('2007-11-30 10:30:19') |
+---------------------------------------+
| 1196389819 |
+---------------------------------------+
-- Match format to display timestamp for given datetime
mysql> select unix_timestamp('2007-11-30 10:30-19', '%Y-%m-%d %H:%i-%s');
+------------------------------------------------------------+
| unix_timestamp('2007-11-30 10:30-19', '%Y-%m-%d %H:%i-%s') |
+------------------------------------------------------------+
| 1196389819.000000 |
+------------------------------------------------------------+
-- Input with non-zero scale
mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19.123');
+-------------------------------------------+
| UNIX_TIMESTAMP('2015-11-13 10:20:19.123') |
+-------------------------------------------+
| 1447381219.123 |
+-------------------------------------------+
-- For datetime before 1970-01-01, returns 0
select unix_timestamp('1007-11-30 10:30:19');
+---------------------------------------+
| unix_timestamp('1007-11-30 10:30:19') |
+---------------------------------------+
| 0 |
+---------------------------------------+
-- Returns NULL if any parameter is null
mysql> select unix_timestamp(NULL);
+----------------------+
| unix_timestamp(NULL) |
+----------------------+
| NULL |
+----------------------+
-- Returns an error if format is invalid
mysql> select unix_timestamp('2007-11-30 10:30-19', 's');
ERROR 1105 (HY000): errCode = 2, detailMessage = (10.16.10.3)[INVALID_ARGUMENT]Operation unix_timestamp of 2007-11-30 10:30-19, s is invalid