2015-01-04 2 views
0

У меня есть таблица со столбцом COL1 (char 23) с полной датой, например. '2007-11-13 12: 34: 49: 012'. Теперь я хочу изменить дату на «2007-11-12 59: 59: 59: 999» (последний раз за день до этого). Почему конвертеры pontmeters не работают? Мой запрос:Преобразование строки на сегодняшний день. SQL

convert(varchar(10),convert(date,DateAdd(day,-1,COL1),121)) + ' 23:59:59:999' 

После

DateAdd(day,-1,COL1) 

я получаю: "12 ноября 2007", и это моя проблема. Наконец-то я получаю: «12 ноября 23: 59: 59: 999»

+0

Почему вы не Google первый ?! –

+3

Каждый человек, которого вы просите совета, скажет вам то же самое: не храните даты как varchars –

+0

Это особый случай, и я должен сделать это таким образом – iTuj

ответ

0

Как насчет этого?

select dateadd(millisecond, -1, dateadd(day, 1, cast(left(col1, 10) as datetime))) 
+0

Теперь я не могу проверить это. Но я думаю, что ваш запрос возвращает тип как DateTime, и я предпочитаю varchar – iTuj

+2

@iTuj. , , Нет вкуса. Вы должны хранить и использовать значения даты/времени в собственных форматах в базе данных. Однако вы можете использовать 'convert()' для преобразования значения в строку, если вы действительно этого хотите. –

0

Varchar (10) не вполне достаточно лин для Ьгу данных VARCHAR (11)

+0

Я знаю, но я хочу конвертировать '12 ноября 2007' в '2007-11-12' – iTuj

+0

@iTuj - извините, пропустил это ... Можете ли вы сказать мне результат ' select @@ LANGUAGE' У меня возникли проблемы с воспроизведением проблемы –

0

попробовать это:

select cast(dateadd(ms, -1, cast(convert(varchar(8), cast(col1 as datetime), 112) as datetime2)) as varchar(23)) 
Смежные вопросы