Я извлекаю даты из базы данных и форматирую их, используя sed, для сравнения с другими датами из другой базы данных.
Две базы данных не совпадают (MS SQL и Hive).
Дата из MS SQL правильно отформатирована следующим образом:
sed "s/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)\ \([0-9]\{2\}\):\([0-9]\{2\}\):\([0-9]\{2\}\)\.\([0-9]\{3\}\)/\1-\2-\3 \4:\5:\6/g")
Однако я не знаю, как это сделать с датой из Hive.
Целевой вывод: ГГГГ-ММ-дд ЧЧ: мм: сс
Ввод из Hive YYYY-MM-dd HH:mm:ss.S
ИЛИ YYYY-MM-dd HH:mm:ss.SS
ИЛИ YYYY-MM-dd HH:mm:ss.SSS
.
Это вызвано игнорированием Hive где-то во время вставки 0 цифр в миллисекундах.
Например:
YYYY-MM-dd HH:mm:ss.XX0
станет YYYY-MM-dd HH:mm:ss.XX
в Улей
YYYY-MM-dd HH:mm:ss.X00
станет YYYY-MM-dd HH:mm:ss.X
в Hive
YYYY-MM-dd HH:mm:ss.000
станет YYYY-MM-dd HH:mm:ss.0
в Hive
Есть ли команда sed, которая может обработать все эти случаи, или следует использовать другое решение?