Como concatenar campos Date e Time para gerar um Timestamp no Firebird?
Fala galera do Show Delphi, tudo beleza?
Outro dia me deparei com uma situação:
Tinha a seguinte tabela
1
2
3
4
5
6
| CREATE TABLE AGENDA (
ID INTEGER NOT NULL,
COMPROMISSO VARCHAR(100) NOT NULL,
DATA DATE NOT NULL,
HORA TIME NOT NULL
); |
CREATE TABLE AGENDA (
ID INTEGER NOT NULL,
COMPROMISSO VARCHAR(100) NOT NULL,
DATA DATE NOT NULL,
HORA TIME NOT NULL
);
E eu tinha a necessidade de recuperar a data e hora em uma única coluna, então me veio a dúvida de como fazer.
Por sorte, para fazer isso foi bem simples, fiz uma concatenação e um cast.
Ou seja, junte o campo data com o campo hora e fiz com cast para timestamp.
Veja o exemplo abaixo.
1
2
3
4
5
6
| -- Criado por Giovani Da Cruz
SELECT
id,
compromisso,
CAST(DATA||' '||hora AS TIMESTAMP) AS horario
FROM agenda |
-- Criado por Giovani Da Cruz
select
id,
compromisso,
cast(data||' '||hora as timestamp) as horario
from agenda
Atendendo a pedidos, estou atualizando o post e colocando um exemplo onde temos a hora salva como char.
Neste caso primeiro precisamos converter a hora para time, depois seguimos conforme o primeiro exemplo.
Vamos ao exemplo 2:
1
2
3
4
5
6
7
8
9
10
11
12
13
| -- Criado por Giovani Da Cruz
SELECT
CAST(
-- exemplo de data
'15.10.2020'
|| ' ' ||
-- simulando uma hora como char exemplo 0930
SUBSTRING('0930' FROM 1 FOR 2)||':'||SUBSTRING('0930' FROM 3 FOR 2)
AS TIMESTAMP) AS data_e_hora
FROM rdb$database |
-- Criado por Giovani Da Cruz
select
cast(
-- exemplo de data
'15.10.2020'
|| ' ' ||
-- simulando uma hora como char exemplo 0930
substring('0930' from 1 for 2)||':'||substring('0930' from 3 for 2)
as timestamp) as data_e_hora
from rdb$database
Espero que ajude a todos!
Dúvidas ou sugestões, deixe nos comentários.
Um abraço e até o post.
-
InfusTec
-
13.923 views
- 2 comentários
- 27 de junho de 2015
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo
Bom dia
tenho um campo
dataAbertura date
hora char(4)
como concateno isso na minha view ?
Olá Marcelo, veja você pode primeiro converter a sua hora em char para time e depois fazer conforme o exemplo do post.