2013-04-08 3 views
0

Мне нужна помощь с преобразованием столбца типа varchar, который имеет значения времени даты до DATETIME, и мне нужно только часть времени от него. т.е. Я столбец со значениями, такими как:Преобразование varchar в тип datetime

Verified_date 
04/04/2013 03:17:08 PM 
05/04/2013 10:10:13 AM 
04/04/2013 03:45:15 PM 

мне нужна только часть времени, то есть,

Time 
03:17:08 PM 
10:10:13 AM 
03:45:15 PM 
+0

Чтобы быть уверенными: у вас есть несколько даты в одном VARCHAR? – DessDess

+0

Нет, только одна дата –

+0

Я делаю Выберите время (STR_TO_DATE ((verify_time), '% d /% m /% Y% T')) от tbl Делая это, я получаю часть времени, но не AM/PM –

ответ

1

Y ожно использовать этот запрос с помощью DATE_FORMAT:

Select DATE_FORMAT(STR_TO_DATE(('04/04/2013 03:17:08 PM'), '%d/%m/%Y %r '), '%r') 

Это заявление даст вам необходимую отформатированный дату как 03:17:08 PM.

Вы можете посмотреть SQL Fiddle.

1

Попробуйте этот запрос, просто добавьте окончание форматирования -

SELECT TIME(STR_TO_DATE('04/04/2013 03:17:08 PM', '%d/%c/%Y %h:%i:%s %p')); 
+----------+ 
| 15:17:08 | 
+----------+ 

One более простое решение -

SELECT SUBSTRING_INDEX('04/04/2013 03:17:08 PM', ' ', -2); 
+-------------+ 
| 03:17:08 PM | 
+-------------+ 
+0

Будет ли второе решение давать дату/время? –

+0

Для стандартных заданных строк - да. – Devart

0

Попробуйте

select DATE_FORMAT(STR_TO_DATE(start, '%d/%m/%Y %r'), '%r') from your_table; 

date-and-time-functions См

+0

Это не дает тег AM/PM –

+0

Отредактировано. попробуйте, что –

+0

дает null в качестве результата –

Смежные вопросы