Справиться с датой кошмаров - PullRequest
0 голосов
/ 02 мая 2020

Я в настоящее время справляюсь с выгребной ямой форматов даты в строковом поле, которое я пытаюсь распутать. Я работаю исключительно на SQL сервере.

У меня есть поле с датами повсюду.

Кто-нибудь знает о хорошей функции или проекте Github, который может помочь?

Например, у меня есть такие вещи, как:

  • cool file 1 - 2018-05- 12
  • File2 04-18-20
  • 26.02.20 - еще один сумасшедший формат
  • shootmenow-2019.02-23.INeedAnAsprin
  • Impossible_But_Ill_Take_Whwhat_10-11-12

Я хотел бы получить из этого нормализованные данные, но некоторую элементарную проверку недопустимых значений.

Я могу передать ему параметр ##.##.##, если придется, но если есть что-то волшебное, которое может принять параметр varchar и выложить дату, я бы лучше воспользовался этим.

Все, на что вы могли бы указать, было бы замечательно.

1 Ответ

1 голос
/ 02 мая 2020

Регулярное выражение, точнее, несколько регулярных выражений могут выполнить работу. Проблема в том, как отличить месяц от дня, например: Impossible_But_Ill_Take_Whatever_10-11-12. Это очень неоднозначно. Регулярное выражение не может волшебным образом определить месяц от дня или даже год в таком случае.

  • 2018-05-12 легко обрабатывать - если это ГГГГ-ММ-ДД, его можно преобразовать в дату прямо
  • Что касается 26.02.20, предполагая, что это 2020 год, его можно преобразовать в дату с использованием «немецкого» формата: SELECT CONVERT (datetime, '26.02.20', 4) - см. CAST и CONVERT - Transact- SQL
  • Что касается 04-18-20: SELECT CONVERT (datetime, '04-18-20', 10) (формат США)

Боюсь, вам нужно будет оценить различные сценарии ios и использовать разные подходы. Я хотел бы сделать следующее:

  • создать копию таблицы
  • выбрать записи, которые имеют похожий формат даты с LIKE или регулярным выражением, а затем выполнить массовую замену после визуальной проверки
  • помечать записи как выполненные

Если вам повезет, вам останется небольшое количество строк, которые нужно исправить вручную. Но я боюсь, что некоторые записи невозможно исправить, потому что они неоднозначны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...