No MySQL, o
TIMESTAMP()
A função retorna um valor de data e hora com base no(s) argumento(s) passado(s). Você pode fornecer um ou dois argumentos. Se você fornecer dois, ele adicionará o segundo ao primeiro e retornará o resultado. Sintaxe
Você pode usar um destes dois formulários:
TIMESTAMP(expr) TIMESTAMP(expr1,expr2)
O primeiro argumento (
expr
e expr1
) é uma expressão de data ou data/hora. O segundo argumento (expr2
) é uma expressão de tempo. Se você fornecer dois argumentos, expr2
é adicionado a expr1
e o resultado é um valor de data e hora. Exemplo 1 - Forneça um argumento de 'data'
Neste exemplo, forneço uma expressão de data.
SELECT TIMESTAMP('1999-12-31');
Resultado:
+-------------------------+ | TIMESTAMP('1999-12-31') | +-------------------------+ | 1999-12-31 00:00:00 | +-------------------------+
Portanto, o resultado é um valor de data e hora, independentemente de nosso argumento ser uma expressão de data ou data e hora.
Exemplo 2 – Forneça um argumento 'datetime'
E aqui está um exemplo usando uma expressão de data e hora.
SELECT TIMESTAMP('1999-12-31 23:59:59');
Resultado:
+----------------------------------+ | TIMESTAMP('1999-12-31 23:59:59') | +----------------------------------+ | 1999-12-31 23:59:59 | +----------------------------------+
Exemplo 3 – Incluir segundos fracionários
Você também pode incluir uma parte de segundos fracionários até microssegundos (6 dígitos). Quando você fizer isso, o resultado também incluirá essa parte.
SELECT TIMESTAMP('1999-12-31 23:59:59.999999');
Resultado:
+-----------------------------------------+ | TIMESTAMP('1999-12-31 23:59:59.999999') | +-----------------------------------------+ | 1999-12-31 23:59:59.999999 | +-----------------------------------------+
Exemplo 4 – Fornecendo 2 argumentos
Aqui está um exemplo usando dois argumentos. Como mencionado, o segundo é adicionado ao primeiro.
SELECT TIMESTAMP('1999-12-31', '12:30:45');
Resultado:
+-------------------------------------+ | TIMESTAMP('1999-12-31', '12:30:45') | +-------------------------------------+ | 1999-12-31 12:30:45 | +-------------------------------------+
Exemplo 5 - Valores de 'tempo' maiores
O tipo de dados de hora pode ter um intervalo de -838:59:59 para 838:59:59 . Isso ocorre porque não se limita apenas a representar a hora do dia. Também pode ser usado para representar o tempo decorrido. Nesse caso, usamos para adicionar um grande número de horas a um valor de data.
SELECT TIMESTAMP('1999-12-31', '400:30:45');
Resultado:
+--------------------------------------+ | TIMESTAMP('1999-12-31', '400:30:45') | +--------------------------------------+ | 2000-01-16 16:30:45 | +--------------------------------------+
Exemplo 6 – Valores negativos
Você pode subtrair o segundo argumento do primeiro, simplesmente prefixando o segundo valor com um sinal de menos.
SELECT TIMESTAMP('1999-12-31', '-400:30:45');
Resultado:
+---------------------------------------+ | TIMESTAMP('1999-12-31', '-400:30:45') | +---------------------------------------+ | 1999-12-14 07:29:15 | +---------------------------------------+
Exemplo 7 – Usando a data atual
Se você quiser um carimbo de data/hora que use a data atual, talvez esteja mais interessado em funções como
NOW()
, CURDATE()
, e possivelmente até SYSDATE()
(para a diferença, veja SYSDATE()
vs NOW()
). No entanto, o
TIMESTAMP()
function ainda pode ser sua função preferida em certos casos, por exemplo, se você quiser adicionar um valor de hora à data atual. SELECT TIMESTAMP(CURDATE()) AS 'Today', TIMESTAMP(CURDATE(), '24:00:00') AS 'Tomorrow';
Resultado:
+---------------------+---------------------+ | Today | Tomorrow | +---------------------+---------------------+ | 2018-07-03 00:00:00 | 2018-07-04 00:00:00 | +---------------------+---------------------+
A função TIMESTAMPADD()
Você pode usar o
TIMESTAMPADD()
função para adicionar uma unidade especificada a um valor de data ou data e hora. Esta função também aceita unidades como dias, meses, anos, etc. Se você encontrar
TIMESTAMP()
muito restritivo para suas necessidades, veja TIMESTAMPADD()
Exemplos.