2013-04-17 4 views
0

У меня есть столбец дат, в гггг-мм-дд Я хочу, чтобы преобразовать его в дд/мм/ыыыыы. Тип данных для этого столбца: nvarchar (20). Я готов изменить тип данных. Я пытаюсь сделать ставкуTsql обновление даты колонки

Update table1 
set Column1= Convert(nvarchar(10),column1,101). 

Выполняется, но не вносит никаких изменений.

+0

Если вы готовы изменить тип данных, то почему бы не просто изменить его на '' date' или DateTime '? Тогда вам не нужно беспокоиться о форматах, и все функции даты будут работать правильно. – Pondlife

+0

[Плохие привычки пинать: выбор неправильного типа данных] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using-the-wrong-data- type.aspx) - вы всегда должны использовать наиболее подходящий тип данных - вот что они там для –

+0

Да, сэр. Спасибо – knahs

ответ

0

Вам нужно преобразовать значение в два раза,

Update table1 
set Column1 = CONVERT(nvarchar(10),CONVERT(datetime, REPLACE(column1,'-','.'), 102), 103) 
+0

Спасибо JW. Это сработало, я просто изменил 102 на 101 для формата, который я искал. – knahs

+0

приветствуется ': D' –

3

Ваши данные не являются Действительно дата. В настоящее время это строка, поэтому Convert не будет иметь никакого эффекта.

Вам потребуется:

update table1 set Column1 = Convert(nvarchar(10), Convert(datetime, column1), 101)

, но еще лучше, вы должны рассмотреть вопрос об изменении типа данных столбца datetime, то convert ИНГ его в нужный формат, когда вы select данные из таблицы.

+0

Благодарим за помощь в работе, но обновили столбец до feb 02 199. – knahs

+0

измените его на 'nvarchar (11)', тогда поле было слишком коротким для преобразования – paul

+0

Спасибо, Пол. – knahs

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