Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Преобразовать дату для UPDATE  [new]
Marat_Best
Guest
Добрый день !!!
есть как обычно очень срочная необходимость преобразовать даты

грубо говоря уничтожили на реальной базе одно поле в таблице с датами (сделали null)
даты вида 2012-07-21 08:30:00

родилась мысль восстановить копию и из нее вытащить даты (саму базу нельзя восстановить очень много изменений)

делаем
select 'update table1 set date1'''+convert(nvarchar(20),date1,121)+''' where un='' + convert(nvarchar(20),un) from table1 where date1 is not null

генерируется скрипт
вида
update table1 set date1='2012-07-21 08:30:00' where un=1
...

как правильно преобразовать date1='2012-07-21 08:30:00' чтобы вставить и дату и время , так выдает ошибку
преобразование varchar в тип данных smalldatetime привело к выходу значения за пределы диапазона

ps
convert(nvarchar(20),date1,121) в конце ставить точку (секунды ?) , как ее убрать ?
26 окт 12, 06:08    [13377823]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать дату для UPDATE  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Marat_Best
...ps
convert(nvarchar(20),date1,121) в конце ставить точку (секунды ?) , как ее убрать ?
Ну, дык... вместо 121 стиля примените хотяп 120.
26 окт 12, 06:29    [13377829]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать дату для UPDATE  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Да и тут
Marat_Best
select 'update table1 set date1'''+convert(nvarchar(20),date1,121)+''' where un='' + convert(nvarchar(20),un) from table1 where date1 is not null


convert без стиля будет преобразовывать к стилю по-умолчанию для языка для юзера, под которым идет конект. Стиль явно укажите.
26 окт 12, 06:33    [13377833]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать дату для UPDATE  [new]
Marat_Best
Guest
автор
Marat_Best
...ps
convert(nvarchar(20),date1,121) в конце ставить точку (секунды ?) , как ее убрать ?
Ну, дык... вместо 121 стиля примените хотяп 120.

спасибо точка ушла

как в update запихать ?
26 окт 12, 06:44    [13377839]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать дату для UPDATE  [new]
Marat_Best
Guest
tpg
Да и тут
Marat_Best
select 'update table1 set date1'''+convert(nvarchar(20),date1,121)+''' where un='' + convert(nvarchar(20),un) from table1 where date1 is not null


convert без стиля будет преобразовывать к стилю по-умолчанию для языка для юзера, под которым идет конект. Стиль явно укажите.
туплю .... не сразу понял ответ
если сделать так
update table1 set date1'''+[color=red]convert(nvarchar(20),date1)[/color]
, приобразует в
update  table1 set date1='ноя 30 2005 12:00АМ'

не выдает ошибок ....

спасибо
26 окт 12, 08:39    [13378088]     Ответить | Цитировать Сообщить модератору
 Re: Преобразовать дату для UPDATE  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Marat_Best
...не выдает ошибок ....
Это временно )))
Напишите хотя бы так -
convert(nvarchar(20),un, 120)
26 окт 12, 09:50    [13378435]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить