В MySQL, TIMESTAMP()
функцията връща стойност за дата и час въз основа на предадените аргументи. Можете да предоставите един или два аргумента. Ако предоставите две, той добавя втория към първия и връща резултата.
Синтаксис
Можете да използвате една от тези две форми:
TIMESTAMP(expr) TIMESTAMP(expr1,expr2)
Първият аргумент (expr
и expr1
) е израз за дата или време. Вторият аргумент (expr2
) е времеви израз. Ако предоставите два аргумента, expr2
се добавя към expr1
и резултатът е стойност за дата и час.
Пример 1 – Предоставете аргумент „дата“
В този пример предоставям израз за дата.
SELECT TIMESTAMP('1999-12-31');
Резултат:
+-------------------------+ | TIMESTAMP('1999-12-31') | +-------------------------+ | 1999-12-31 00:00:00 | +-------------------------+
Така че резултатът е стойност за дата и час, независимо дали нашият аргумент е израз за дата или време.
Пример 2 – Предоставете аргумент „datetime“
И ето пример за използване на израз за дата и час.
SELECT TIMESTAMP('1999-12-31 23:59:59');
Резултат:
+----------------------------------+ | TIMESTAMP('1999-12-31 23:59:59') | +----------------------------------+ | 1999-12-31 23:59:59 | +----------------------------------+
Пример 3 – Включете дробни секунди
Можете също да включите част от секунди до микросекунди (6 цифри). Когато направите това, резултатът ще включва и тази част.
SELECT TIMESTAMP('1999-12-31 23:59:59.999999');
Резултат:
+-----------------------------------------+ | TIMESTAMP('1999-12-31 23:59:59.999999') | +-----------------------------------------+ | 1999-12-31 23:59:59.999999 | +-----------------------------------------+
Пример 4 – Предоставяне на 2 аргумента
Ето пример, използващ два аргумента. Както споменахме, вторият се добавя към първия.
SELECT TIMESTAMP('1999-12-31', '12:30:45');
Резултат:
+-------------------------------------+ | TIMESTAMP('1999-12-31', '12:30:45') | +-------------------------------------+ | 1999-12-31 12:30:45 | +-------------------------------------+
Пример 5 – По-големи стойности на „времето“
Типът данни за времето може да има диапазон от -838:59:59 до 838:59:59 . Това е така, защото не се ограничава само до представяне на времето от деня. Може да се използва и за представяне на изминало време. В този случай го използваме, за да добавим голям брой часове към стойност за дата.
SELECT TIMESTAMP('1999-12-31', '400:30:45');
Резултат:
+--------------------------------------+ | TIMESTAMP('1999-12-31', '400:30:45') | +--------------------------------------+ | 2000-01-16 16:30:45 | +--------------------------------------+
Пример 6 – Отрицателни стойности
Можете да извадите втория аргумент от първия, просто като поставите пред втората стойност знак минус.
SELECT TIMESTAMP('1999-12-31', '-400:30:45');
Резултат:
+---------------------------------------+ | TIMESTAMP('1999-12-31', '-400:30:45') | +---------------------------------------+ | 1999-12-14 07:29:15 | +---------------------------------------+
Пример 7 – Използване на текущата дата
Ако искате времева марка, която използва текущата дата, може да се интересувате повече от функции като NOW()
, CURDATE()
и вероятно дори SYSDATE()
(за разликата вижте SYSDATE()
срещу NOW()
).
Въпреки това, TIMESTAMP()
функцията все още може да бъде предпочитаната от вас функция в определени случаи, например ако искате да добавите стойност за час към текущата дата.
SELECT TIMESTAMP(CURDATE()) AS 'Today', TIMESTAMP(CURDATE(), '24:00:00') AS 'Tomorrow';
Резултат:
+---------------------+---------------------+ | Today | Tomorrow | +---------------------+---------------------+ | 2018-07-03 00:00:00 | 2018-07-04 00:00:00 | +---------------------+---------------------+
Функция TIMESTAMPADD()
Можете да използвате TIMESTAMPADD()
функция за добавяне на определена единица към стойност на дата или час. Тази функция приема и единици като дни, месеци, години и т.н.
Ако намерите TIMESTAMP()
твърде ограничаващ за вашите нужди, вижте TIMESTAMPADD()
Примери.