Предполагая, что вы используете sqlite:
Я создал простую таблицу для проверки результатов следующим образом:
DROP TABLE IF EXISTS MY_TABLE;
CREATE TABLE MY_TABLE ("SOME_UNIQUE_ID" INTEGER,"Day" TEXT,"Date" TEXT,"YT" TEXT);
INSERT INTO MY_TABLE ("SOME_UNIQUE_ID","Day","Date","YT") VALUES ("1","Sun","Dec 17","2017 11:58:00 PM");
INSERT INTO MY_TABLE ("SOME_UNIQUE_ID","Day","Date","YT") VALUES ("2","Jan 4 - 10:43 AM","","");
Итак, после фиксации предыдущих операторов выполните следующий запрос ...
SELECT * FROM MY_TABLE;
возвращает ...
SOME_UNIQUEID Day Date YT
1 Sun Dec 17 2017 11:58:00 PM
2 Jan 4 - 10:43 AM
Наконец, это большой запрос для получения всех ваших записей с хорошо отформатированным столбцом даты и времени.Вам нужно изменить этот запрос, чтобы он соответствовал имени вашей таблицы и именам столбцов.
SELECT SOME_UNIQUE_ID,
datetime(FULL_DATE_STRING) AS DATETIME_FULL
FROM (
SELECT SOME_UNIQUE_ID,
coalesce(YYYY_str,"") || "-" || coalesce(MM_str,"") || "-" || coalesce(DD_str,"") || " " || coalesce(HHMMSS_str,"") AS FULL_DATE_STRING
FROM (
SELECT SOME_UNIQUE_ID,
substr(YT,0,5) AS YYYY_str,
CASE substr("Date",0,4)
WHEN 'Jan'
THEN '01'
WHEN 'Feb'
THEN '02'
WHEN 'Mar'
THEN '03'
WHEN 'Apr'
THEN '04'
WHEN 'May'
THEN '05'
WHEN 'Jun'
THEN '06'
WHEN 'Jul'
THEN '07'
WHEN 'Aug'
THEN '08'
WHEN 'Sep'
THEN '09'
WHEN 'Oct'
THEN '10'
WHEN 'Nov'
THEN '11'
WHEN 'Dec'
THEN '12'
ELSE NULL
END MM_str,
substr("Date",5,2) AS DD_str,
substr(substr(YT, 6),0,9) AS HHMMSS_str
FROM MY_TABLE
)
)
WHERE DATETIME_FULL IS NOT NULL
UNION ALL
SELECT SOME_UNIQUE_ID,
datetime(YYYYMMDD_str || " " || HHMMSS_str_mod) AS DATETIME_FULL
FROM (
SELECT SOME_UNIQUE_ID,
YYYY_str || "-" || MM_str || "-" || DD_str AS YYYYMMDD_str,
CASE AMPM_str
WHEN 'AM'
THEN HHMMSS_str
WHEN 'PM'
THEN replace(HHMMSS_str,substr(HHMMSS_str,1,2),substr(HHMMSS_str,1,2)+12)
ELSE NULL
END HHMMSS_str_mod
FROM (
SELECT SOME_UNIQUE_ID,
"2018" AS YYYY_str,
MM_str,
substr('00'||D_str,-2) AS DD_str,
HHMMSS_str,
AMPM_str
FROM (
SELECT SOME_UNIQUE_ID,
CASE substr("Day",1,3)
WHEN 'Jan'
THEN '01'
WHEN 'Feb'
THEN '02'
WHEN 'Mar'
THEN '03'
WHEN 'Apr'
THEN '04'
WHEN 'May'
THEN '05'
WHEN 'Jun'
THEN '06'
WHEN 'Jul'
THEN '07'
WHEN 'Aug'
THEN '08'
WHEN 'Sep'
THEN '09'
WHEN 'Oct'
THEN '10'
WHEN 'Nov'
THEN '11'
WHEN 'Dec'
THEN '12'
ELSE NULL
END MM_str,
rtrim(substr("Day",5,2)) AS D_str,
substr("Day",-8,5) || ":00" AS HHMMSS_str,
substr("Day",-2,2) AS AMPM_str
FROM MY_TABLE
)
)
)
WHERE DATETIME_FULL IS NOT NULL
;
Возвращает:
SOME_UNIQUE_ID DATETIME_FULL
1 2017-12-17 11:58:00
2 2018-01-04 10:43:00
Отсюда вы можете получить DATETIME_FULL в любом формате, который вам нужен.например, см. https://www.sqlite.org/lang_datefunc.html. Кроме того, в python есть много способов работы с данными даты и времени, которые вы можете искать самостоятельно.