O Tipo TIME
O MariaDB recupera e mostra valores TIME
no formato 'HH:MM:SS'
(ou no formato 'HHH:MM:SS'
para valores grandes). Volares TIME
podem estar na faixa de '-838:59:59'
até '838:59:59'
. A razão para a parte da hora ser tão grande é que o tipo TIME
pode ser usado não apenas para representar a hora do dia (que deve ser menor que 24 horas), mas também para tempo restante ou intervalos de tempo entre dois eventos(que podem ser maior que 24 horas ou mesmo negativo).
Você pode especificar valores TIME
de variadas formas:
- Como uma string no formato
'D HH:MM:SS.fração'
. (Note que o MariaDB não armazena ainda frações para a coluna time.) Pode-se também utilizar uma das seguintes sintaxesrelaxadas
:HH:MM:SS.fração
,HH:MM:SS
,HH:MM
,D HH:MM:SS
,D HH:MM
,D HH
ouSS
. AquiD
é um dia entre 0-33. - Como uma string sem delimitadores no formato
'HHMMSS'
, desde que ela tenha sentido como uma hora. Por exemplo,'101112'
é esntendido como'10:11:12'
, mas'109712'
é ilegal (a parte dos minutos não tem nenhum sentido) e se torna'00:00:00'
. - Como um número no formato
HHMMSS
, desde que tenha sentido como uma hora. Por exemplo,101112
é entendido com'10:11:12'
. Os formatos alternativos seguintes também são entendidos:SS
,MMSS
,HHMMSS
eHHMMSS.fração
. Note que o MariaDB ainda não armazena frações. - Como o resultado de uma função que retorne um valor que é aceitável em um contexto do tipo
TIME
, tal comoCURRENT_TIME
.
Para valores TIME
especificados como uma string que incluem delimitadores de hora, não é necessário especificar dois dígitos para valores de hora, minutos ou segundos que sejam menores que 10
. '8:3:2'
é o mesmo que '08:03:02'
.
Seja cuidadoso ao atribuir valores TIME
pequenos
para uma coluna TIME
. Sem dois pontos, o MariaDB interprete valores assumindo que os digitos mais a direita representam segundos. (MySQL interpreta valores TIME
como tempo decorrido ao invés de hora do dia.) Por exemplo, você poderia pensar em '1112'
e 1112
significam '11:12:00'
(11 horas e 12 minutos), mas o MariaDB o intepreta como '00:11:12'
(onze minutos e 12 segundos). De forma similar, '12'
e 12
são interpretados como '00:00:12'
. Valores TIME
com dois pontos, em contrapartida, são tratados como hora do dia. Isto é, '11:12'
significará '11:12:00'
, não '00:11:12'
.
Valores que são legais mas que estão fora da faixa permitidas são ajustados para o valor limita da faixa mais apropriado. Por exemplo, '-850:00:00'
e '850:00:00'
são convertidos para '-838:59:59'
e '838:59:59'
, respectivmente.
Valores TIME
ilegais são convertidos para '00:00:00'
. Note que como '00:00:00'
é um valor TIME
, não temos com dizer, a partir de um valor '00:00:00'
armazenado na tabela, se o valor original armazenado foi especificado como '00:00:00'
ou se foi ilegal.