Использование CASE
для рабочих дней может помочь в этом.
Тогда CONCAT
время для этого.
Пример:
SELECT
CONCAT(
case SUBSTRING(weekday_at_time, 1, LOCATE(' ',weekday_at_time)-1)
when 'Sundays' then '0000-01-01 '
when 'Mondays' then '0000-01-02 '
when 'Tuesdays' then '0000-01-03 '
when 'Wednesdays' then '0000-01-04 '
when 'Thursdays' then '0000-01-05 '
when 'Fridays' then '0000-01-06 '
when 'Saturdays' then '0000-01-07 '
end,
STR_TO_DATE(SUBSTRING(weekday_at_time,length(weekday_at_time)-4,5),'%H:%i')
) AS "DATETIME"
FROM (
-- Sample data
select 'Sundays at 14:45' as weekday_at_time
union all select 'Saturdays at 13:35'
) AS Samples
Тест по SQL Fiddle здесь
Но это предполагает, что вы обновили его до столбца VARCHAR.
Потому что приведение метки даты и времени года '0000' к дате и времени может дать другой результат.
Например:
select cast('0000-01-01 13:35:00' as datetime) as dt
Возвращает:
-0001-12-30T13:35:00Z
Изменение года на «1900» может быть безопаснее, если вы обновляете DATETIME.
Тест по SQL Fiddle здесь