Использование дат с недостающими частями

Задача
Даты в вашем файле данных являются неполными, то есть в них отсутствуют какие-то составляющие.

Решение
MySQL может представить их в формате ISO, используя для недостающих составляющих нули.

Обсуждение
Некоторые приложения используют неполные даты. Например, вам может потребоваться обработка таких значений ввода, как Mar/2001, которые содержат только месяц и день. Начиная с версии MySQL 3.23 можно представлять такие значения датами в формате ISO, которые содержат нули вместо недостающих составляющих. (Значение Mar/2001 может храниться как 2001-03-00.)

Чтобы преобразовать значения месяц/год в формат ISO для импортирования в MySQL, создайте хеш для сопоставления названиям месяцев их числовых значений:

my %map = # сопоставить названию месяца его номер
(
"jan" => 1, "feb" => 2, "mar" => 3, "apr" => 4, "may" => 5, "jun" => 6,
"jul" => 7, "aug" => 8, "sep" => 9, "oct" => 10, "nov" => 11, "dec" => 12
);

Тогда каждое значение ввода будет преобразовано следующим образом:

if ($val =~ /^([a-z]{3})\/(\d{4})$/i)
{
my ($m, $y) = (lc ($1), $2); # использовать название месяца в нижнем регистре
$val = sprintf ("%04d-%02d-00", $y, $map{$m})
}

После сохранения результирующих значений в MySQL можно извлекать их для отображения в исходном формате месяц/год, выполняя предложение SELECT, форматирующее даты при помощи выражения DATE_FORMAT():

DATE_FORMAT(date_val,'%b/%Y')

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела MySQL на эту тему:
Диагностическая утилита для LOAD DATA
Извлечение и перестановка столбцов файлов данных
Импорт XML в MySQL
Импорт с помощью LOAD DATA и утилиты mysqlimport
Импорт файлов в формате CSV

Вернуться в раздел: MySQL / 10. Импорт и экспорт данных