Geral
1 Comentário JAVA/Datas/MSSQL
Estou trabalhando em um sistema em que eu precisava recuperar campos com data de um banco MSSQL. Até aí tudo bem, mas na hora de converter aquele formato datetime do banco para o formato que eu estava precisando (dd/mm/yyyy), a coisa fica chata de fazer.
Como sou da lei do menor esforço, depois de ter batido cabeça fazendo a conversão usando o Java, lembrei que muitas destas funções triviais já são métodos internos do banco de dados.
Depois de consultar o Google, achei uma documentação sobre o método convert. Seu uso é simples: CONVERT(data_type,expression [,style]).
Por exemplo: SELECT OrderDate, CONVERT(nvarchar(10), OrderDate, 101) FROM Orders.
O “style” 101 representa a máscara ‘mm/dd/yy’.
Os “styles” seguem a seguinte tabela:
| Without century (yy) | With century (yyyy) | Standard | Input/Output2 |
|---|---|---|---|
| - | 0 or 100 1 | Default | mon dd yyyy hh:miAM (or PM) |
| 1 | 101 | USA | mm/dd/yy |
| 2 | 102 | ANSI | yy.mm.dd |
| 3 | 103 | British/French | dd/mm/yy |
| 4 | 104 | German | dd.mm.yy |
| 5 | 105 | Italian | dd-mm-yy |
| 6 | 106 | - | dd mon yy |
| 7 | 107 | - | Mon dd, yy |
| 8 | 108 | - | hh:mm:ss |
| - | 9 or 109 1 | Default + milliseconds | mon dd yyyy hh:mi:ss:mmmAM (or PM) |
| 10 | 110 | USA | mm-dd-yy |
| 11 | 111 | JAPAN | yy/mm/dd |
| 12 | 112 | ISO | yymmdd |
| - | 13 or 113 1 | Europe default + milliseconds | dd mon yyyy hh:mm:ss:mmm(24h) |
| 14 | 114 | - | hh:mi:ss:mmm(24h) |
| - | 20 or 120 1 | ODBC canonical | yyyy-mm-dd hh:mi:ss(24h) |
| - | 21 or 121 1 | ODBC canonical (with milliseconds) | yyyy-mm-dd hh:mi:ss.mmm(24h) |
| - | 1263 | ISO8601 | yyyy-mm-dd Thh:mm:ss.mmm(no spaces) |
| - | 1301 | Hijri4 | dd mon yyyy hh:mi:ss:mmmAM |
| - | 1311 | Hijri4 | dd/mm/yy hh:mi:ss:mmmAM |
Não creio que essa operação onere muito o banco de dados, mas ainda vou verificar isso com os nossos DBA’s.
Mas é bom esse MSSQL….