A função @FORMATADATA permite formatar campos de data/hora de forma dinâmica em uma consulta SQL, adaptando automaticamente a expressão conforme o banco de dados utilizado.
Sintaxe
@FORMATADATA(CAMPO, 'FORMATO')
Parâmetros
| Nome
|
Tipo
|
Descrição
|
| Campo
|
String
|
Campo do tipo Date, time, timestamp
|
| Formato
|
String
|
Máscara de formato compatível com o banco
|
Comportamento por Banco
| Nome
|
Banco
|
Descrição
|
| @FORMATADATA
|
PostgreSQL
|
TO_CHAR(CAMPO, 'FORMATO')
|
| @FORMATADATA
|
Oracle
|
TO_CHAR(CAMPO, 'FORMATO')
|
| @FORMATADATA
|
FireBird
|
Usa EXTRACT e LPAD para compor o formato
|
| @FORMATADATA
|
SQLServer
|
FORMAT(CAMPO, 'FORMATO')
|
Formatos Suportados
| Formato
|
Exemplo
|
Descrição
|
| 'MM/YYYY'
|
08/2025
|
Mês e ano
|
| 'DD/MM/YYYY'
|
04/08/2025
|
Dia, mês e ano
|
| 'HH:mm'
|
14:30
|
Hora e minuto
|
| 'YYYY'
|
2025
|
Apenas ano
|
Exemplos
procedure ConsultaComDataFormatada;
var
Q: TPHQuery;
begin
try
Q := NewPHQuery;
Q.Add('SELECT ID, ' +
'@FORMATADATA(DATA, MM/YYYY) AS MESANO, ' +
'@FORMATADATA(HORAINICIO, HH:mm) AS HORA ' +
'FROM AGENDA ' +
'WHERE DATA BETWEEN :DTINI AND :DTFIM');
finally
Q.Free;
end;
end;
begin
ConsultaComDataFormatada;
end.