O valor TSqlDialect controla o formato dos literais de
data, hora, data e hora e booleanos em SQLExpression e
SQLValues[]. Os literais de cadeia de caracteres e
numéricos não são afetados pelo dialeto. O dialeto predefinido é
sqlElevateDB. Defina-o uma vez por aplicação com
SetSQLDialect ou especifique-o em cada chamada através da
sobrecarga completa de ParseInput.
| Identificador | Base de dados de destino |
|---|---|
sqlMySQL |
MySQL 5.x+ / MariaDB 10.x+ |
sqlElevateDB |
ElevateDB 2.x+ |
sqlDBISAM |
DBISAM 4.x |
sqlPostgreSQL |
PostgreSQL 9.x+ |
sqlMSSQLServer |
Microsoft SQL Server 2008+ |
sqlSQLite |
SQLite 3.x+ |
sqlFirebird |
Firebird 3+ / InterBase |
sqlOracle |
Oracle 11g+ |
sqlAccess |
Microsoft Access (Jet / ACE) |
sqlBDEParadox |
BDE / Paradox |
| Dialeto | Formato | Exemplo |
|---|---|---|
sqlMySQL |
DATE 'yyyy-mm-dd' |
DATE '2026-03-25' |
sqlElevateDB |
DATE 'aaaa-mm-dd' |
DATE '2026-03-25' |
sqlDBISAM |
'aaaa-mm-dd' |
'2026-03-25' |
sqlPostgreSQL |
DATE 'aaaa-mm-dd' |
DATE '2026-03-25' |
sqlMSSQLServer |
'aaaa-mm-dd' |
'2026-03-25' |
sqlSQLite |
'aaaa-mm-dd' |
'2026-03-25' |
sqlFirebird |
DATE 'aaaa-mm-dd' |
DATE '2026-03-25' |
sqlOracle |
TO_DATE('yyyy-mm-dd','YYYY-MM-DD') |
TO_DATE('2026-03-25','YYYY-MM-DD') |
sqlAccess |
#yyyy-mm-dd# |
#2026-03-25# |
sqlBDEParadox |
"dd.mm.yyyy" |
"25.03.2026" |
O sufixo [.fff] é incluído apenas quando os
milissegundos são diferentes de zero. Zero milissegundos produz sempre
um literal simples hh:mm:ss.
| Dialeto | Formato (sem ms) | Formato (com ms) | Notas |
|---|---|---|---|
sqlMySQL |
TIME 'hh:mm:ss' |
TIME 'hh:mm:ss.fff' |
ms de 3 dígitos |
sqlElevateDB |
TIME 'hh:mm:ss' |
TIME 'hh:mm:ss.fff' |
milissegundos de 3 dígitos |
sqlDBISAM |
'hh:mm:ss' |
'hh:mm:ss.fff' |
ms de 3 dígitos |
sqlPostgreSQL |
TIME 'hh:mm:ss' |
TIME 'hh:mm:ss.fff' |
ms de 3 dígitos |
sqlMSSQLServer |
'hh:mm:ss' |
'hh:mm:ss.fff' |
ms de 3 dígitos |
sqlSQLite |
'hh:mm:ss' |
'hh:mm:ss.fff' |
ms de 3 dígitos |
sqlFirebird |
TIME 'hh:mm:ss' |
TIME 'hh:mm:ss.ffff' |
4 dígitos (milésimos de milésimo, ms × 10) |
sqlOracle |
TO_TIMESTAMP('hh:mm:ss','HH24:MI:SS') |
TO_TIMESTAMP('hh:mm:ss.fff','HH24:MI:SS.FF3') |
3 dígitos (ms) |
sqlAccess |
#hh:mm:ss# |
#hh:mm:ss# |
ms omitidos |
sqlBDEParadox |
"hh:mm:ss" |
"hh:mm:ss" |
ms omitidos |
Nota sobre o Firebird: O Firebird armazena tempos
inferiores a um segundo como dez milésimos de segundo (0–9999). O
parser multiplica os milissegundos analisados por 10 para
produzir o valor de 4 dígitos. Por exemplo, 500 ms é armazenado como
5000 dezmilésimos e o literal é
TIME '09:30:15.5000'.
O sufixo [.fff] / [.ffff] segue as mesmas
regras que os literais de hora acima.
| Dialeto | Formato (sem ms) | Formato (com ms) | Notas |
|---|---|---|---|
sqlMySQL |
'yyyy-mm-dd hh:mm:ss' |
'yyyy-mm-dd hh:mm:ss.fff' |
ms de 3 dígitos |
sqlElevateDB |
TIMESTAMP 'yyyy-mm-dd hh:mm:ss' |
TIMESTAMP 'yyyy-mm-dd hh:mm:ss.fff' |
3 dígitos de milissegundos |
sqlDBISAM |
'aaaa-mm-dd hh:mm:ss' |
'aaaa-mm-dd hh:mm:ss.fff' |
3 dígitos (ms) |
sqlPostgreSQL |
TIMESTAMP 'aaaa-mm-dd hh:mm:ss' |
TIMESTAMP 'aaaa-mm-dd hh:mm:ss.fff' |
3 dígitos (ms) |
sqlMSSQLServer |
'aaaa-mm-dd hh:mm:ss' |
'aaaa-mm-dd hh:mm:ss.fff' |
3 dígitos de milissegundos |
sqlSQLite |
'aaaa-mm-dd hh:mm:ss' |
'aaaa-mm-dd hh:mm:ss.fff' |
ms de 3 dígitos |
sqlFirebird |
TIMESTAMP 'aaaa-mm-dd hh:mm:ss' |
TIMESTAMP 'aaaa-mm-dd hh:mm:ss.ffff' |
4 dígitos de dez milésimos (ms × 10) |
sqlOracle |
TO_TIMESTAMP('yyyy-mm-dd hh:mm:ss','YYYY-MM-DD HH24:MI:SS') |
TO_TIMESTAMP('yyyy-mm-dd hh:mm:ss.fff','YYYY-MM-DD HH24:MI:SS.FF3') |
ms de 3 dígitos |
sqlAccess |
#yyyy-mm-dd hh:mm:ss# |
#yyyy-mm-dd hh:mm:ss# |
ms omitidos |
sqlBDEParadox |
"dd.mm.yyyy hh:mm:ss" |
"dd.mm.yyyy hh:mm:ss" |
ms omitidos |
| Dialeto | Verdadeiro | Falso |
|---|---|---|
sqlMySQL |
TRUE |
FALSE |
sqlElevateDB |
TRUE |
FALSE |
sqlDBISAM |
TRUE |
FALSE |
sqlPostgreSQL |
TRUE |
FALSE |
sqlMSSQLServer |
1 |
0 |
sqlSQLite |
1 |
0 |
sqlFirebird |
TRUE |
FALSE |
sqlOracle |
1 |
0 |
sqlAccess |
True |
False |
sqlBDEParadox |
TRUE |
FALSE |
Os literais de cadeia de caracteres são independentes do dialeto.
Cada token itString é colocado entre aspas simples,
seguindo a convenção QuotedStr do Delphi: as aspas simples
internas são duplicadas.
O'Brien → 'O''Brien'
Os literais inteiros, decimais e de ponto flutuante são independentes
do dialeto. O separador decimal é sempre .,
independentemente da localização do tempo de execução.
itDecimal: 1,99 → 1.9900
itFloat: 1,5 → 1.5
A cláusula ESCAPE '\' anexada a expressões LIKE é
independente do dialeto, com uma exceção: o sqlBDEParadox
não recebe uma cláusula ESCAPE, uma vez que o suporte da
camada SQL do BDE para a mesma não é fiável. Consulte Operadores para mais detalhes.