TIME & YEAR (Hora Isolada e Ano)
💾 TIME: 3 Bytes | YEAR: 1 ByteTIME armazena horários do dia ou durações (HH:MM:SS); YEAR armazena um ano em 1 Byte.
O tipo `TIME` (3 bytes) é ideal para horários recorrentes que independem de um dia específico, como horário de abertura e fechamento de uma loja (`08:00:00` às `18:00:00`). Já o tipo `YEAR` no MySQL ocupa apenas 1 byte para anos entre 1901 e 2155.
✅ Quando Usar (Casos Ideais)
- • Horário comercial de abertura e fechamento (`abre_as TIME`, `fecha_as TIME`).
- • Horário de início de uma turma escolar (`horario_aula TIME`).
🚫 Quando NÃO Usar (Armadilhas)
- • Para anos fora da faixa de 1901 a 2155 (use `SMALLINT` em vez de `YEAR` para maior compatibilidade com PostgreSQL e SQLite).
📐 Como Configurar no DrawDB Abrir DrawDB ↗
TIME
TIME
TEXT
📋 Exemplos Reais de Colunas com TIME:
CREATE TABLE horarios_funcionamento (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
dia_semana TINYINT UNSIGNED NOT NULL COMMENT '1=Dom, 2=Seg ... 7=Sab',
horario_abertura TIME NOT NULL,
horario_fechamento TIME NOT NULL
);
<?php
declare(strict_types=1);
$abertura = '08:30:00';
$fechamento = '18:00:00';
if (!preg_match('/^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/', $abertura)) {
throw new InvalidArgumentException('Horário inválido.');
}
$stmt = $pdo->prepare('
INSERT INTO horarios_funcionamento (dia_semana, horario_abertura, horario_fechamento)
VALUES (:dia, :abre, :fecha)
');
$stmt->bindValue(':dia', 2, PDO::PARAM_INT); // Segunda-feira
$stmt->bindValue(':abre', $abertura, PDO::PARAM_STR);
$stmt->bindValue(':fecha', $fechamento, PDO::PARAM_STR);
$stmt->execute();