2014-12-17 7 views
0

У меня есть столбец MyColumn и тип данных Varchar (50) в sql server 2012. Он хранит даты, время и другую информацию. Я могу изменить запрос для создания только строк даты и времени, но формат имеет проблемы.Varchar to Date and Time

Q1) Как я могу изменить результат от 20141213 до 12132014. Я использовал ниже, и это не сработало. Он работает только тогда, когда тип данных для MyColumn равен DATETIME или связанному, но с Varchar он не будет работать.

SELECT REPLACE(CONVERT(VARCHAR(10), MyColumn, 110),'-','') from MyTable 

Q2) MyColumn сохраняет время, как, например 0815. Как включить semi-colon в качестве 08:15?

Пожалуйста, помогите. Спасибо.

+11

значения магазин дата/время как '' date' или datetime'. Не пытайтесь играть со строковым форматированием, когда SQL имеет хорошую поддержку реального типа данных. –

+1

Я бы полностью согласился с @GordonLinoff. Используйте базовые типы данных SQL. С наилучшими пожеланиями, –

+0

До сих пор я решил Q2, написав следующий оператор: SELECT LEFT (MyColumn, 2) + ':' + RIGHT (MyColumn, 2); – Bulbul

ответ

0

я не буду рекомендовать дату сохранения в строке, вы можете сохранить тип данных в качестве даты или DateTime DATATYPE,

ответа для Q1

SELECT SUBSTRING(MyColumn, 5,2) + RIGHT(MyColumn, 2) + LEFT(MyColumn, 4) 

но помните свои работы только тогда, когда ваш жали в ГГГГММДДЕ формат и если изменить форматирование, то неправильный ответ придет или может получить сообщение об ошибке и отвечать за Q2 является

SELECT LEFT(MyColumn, 2) + ':' + RIGHT(MyColumn, 2)