FROM_UNIXTIME
Syntax
Description
Converts the number of seconds from the epoch (1970-01-01 00:00:00 UTC) to aTIMESTAMP
value, the opposite of what [UNIX_TIMESTAMP()](unix_timestamp.md)
is doing. Returns NULL if the result would be outside of the valid range of TIMESTAMP
values.
If format is given, the result is exactly equivalent to
MariaDB until 11.7
Before MariaDB 11.7, the one-argument form of FROM_UNIXTIME()
was returning aDATETIME
. Meaning, it could return values outside of valid TIMESTAMP
range,
in particular 1970-01-01 00:00:00. And it could return the same result for different values of unix_timestamp (around DST changes).
Timestamps in MariaDB have a maximum value of 4294967295, equivalent to 2106-02-07 06:28:15. This is due to the underlying 32-bit limitation. Using the function on a timestamp beyond this will result in NULL being returned. Use DATETIME as a storage type if you require dates beyond this.
MariaDB until 11.5
Before MariaDB 11.5, the maximum value was 2147483647, equivalent to 2038-01-19 05:14:07.
The options that can be used by FROM_UNIXTIME(), as well as DATE_FORMAT() and STR_TO_DATE(), are:
Option
Description
%a
Short weekday name in current locale (Variable lc_time_names).
%b
Short form month name in current locale. For locale en_US this is one of: Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov or Dec.
%c
Month with 1 or 2 digits.
%D
Day with English suffix 'th', 'nd', 'st' or 'rd''. (1st, 2nd, 3rd...).
%d
Day with 2 digits.
%e
Day with 1 or 2 digits.
%f
Microseconds 6 digits.
%H
Hour with 2 digits between 00-23.
%h
Hour with 2 digits between 01-12.
%I
Hour with 2 digits between 01-12.
%i
Minute with 2 digits.
%j
Day of the year (001-366)
%k
Hour with 1 digits between 0-23.
%l
Hour with 1 digits between 1-12.
%M
Full month name in current locale (Variable lc_time_names).
%m
Month with 2 digits.
%p
AM/PM according to current locale (Variable lc_time_names).
%r
Time in 12 hour format, followed by AM/PM. Short for '%I:%i:%S %p'.
%S
Seconds with 2 digits.
%s
Seconds with 2 digits.
%T
Time in 24 hour format. Short for '%H:%i:%S'.
%U
Week number (00-53), when first day of the week is Sunday.
%u
Week number (00-53), when first day of the week is Monday.
%V
Week number (01-53), when first day of the week is Sunday. Used with %X.
%v
Week number (01-53), when first day of the week is Monday. Used with %x.
%W
Full weekday name in current locale (Variable lc_time_names).
%w
Day of the week. 0 = Sunday, 6 = Saturday.
%X
Year with 4 digits when first day of the week is Sunday. Used with %V.
%x
Year with 4 digits when first day of the week is Sunday. Used with %v.
%Y
Year with 4 digits.
%y
Year with 2 digits.
%#
For str_to_date(), skip all numbers.
%.
For str_to_date(), skip all punctation characters.
%@
For str_to_date(), skip all alpha characters.
%%
A literal % character.
Performance Considerations
If your session time zone is set to SYSTEM
(the default), FROM_UNIXTIME()
will call the OS function to convert the data using the system time zone. At least on Linux, the corresponding function (localtime_r
) uses a global mutex inside glibc that can cause contention under high concurrent load.
Set your time zone to a named time zone to avoid this issue. See mysql time zone tables for details on how to do this.
Examples
See Also
This page is licensed: GPLv2, originally from fill_help_tables.sql
Last updated
Was this helpful?