SQL Server 2008: сохранить дату в поле nvarchar - PullRequest
0 голосов
/ 21 марта 2012

У меня есть общее поле в таблице базы данных на SQL Server 2008. Тип этого поля - nvarchar (255). Это поле содержит несколько различных типов значений, поступающих из приложения.

В настоящее время мне необходимо преобразовать значения в поле из формата «19 июля 2011 г., 12:00», например, в формат «2011-07-19 00: 00: 00.000».

Я знаю, что могу получить это обратно в формате запроса с оператором:

SELECT CONVERT(datetime, value, 121)
  FROM [Table]
  where ...

Это дает мне нужный формат отображения, но когда я пытаюсь обновить таблицу с исправленным форматом, используя следующий запрос, он преобразует ее обратно в формат «19 июля 2011 г., 12:00». *

Запрос на обновление:

Update [Table]
  set Value = CONVERT(datetime, t2.value, 121)
  from [Table] t1
  inner join
  (SELECT ID, CONVERT(datetime, value, 121) as value
  FROM [Table]) t2
  on t2.ID = t1.ID

Есть ли способ заставить поле назначения nvarchar (255) поддерживать формат "2011-07-19 00: 00: 00.000", указанный в конверте?

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

Судя по всему, для обновления нет необходимости самостоятельно объединяться.

Это должно делать то, что вы хотите:

update [Table] 
set value = convert(nvarchar(23), convert(datetime, value, 100), 121)
0 голосов
/ 21 марта 2012

Используя что-то вроде этого, изменив getdate () на ваше поле даты:

select cast(datepart(yyyy,getdate()) as char(4)) + '-' 
        + replace(str(datepart(mm,getdate()),2),' ','0') + '-'
        + replace(str(datepart(dd,getdate()),2),' ','0') + ' '
        + replace(str(datepart(hh,getdate()),2),' ','0') + ':'
        + replace(str(datepart(mi,getdate()),2),' ','0') + ':'
        + replace(str(datepart(ss,getdate()),2),' ','0') + '.'
        + replace(str(datepart(ms,getdate()),3),' ','0')

Вы можете найти удобную функцию для получения этого формата.

Пожалуйста, внимательно прочитайтевопрос, прежде чем пометить его как плохой вопрос.Msgstr "Сохранить дату в поле nvarchar".Этот человек хочет сохранить дату как «ТЕКСТ» в поле в нужном формате!Пожалуйста, будь осторожнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...