2015-02-05 9 views
0

У меня есть таблица, где дата и метка времени записываются вместе, и я хочу показывать только дату в 10-символьном выходе. Также я хочу вернуться как пустые некоторые даты в поле, которое 01/01/1800.преобразование формата даты, чтобы исключить отметку времени

Текущий формат таблицы: 2013-06-28 00: 00: 00: 000 Я просто хочу дату. Я использовал функцию RTRIM, но она продолжает выходить из строя.

Благодарим Вас заранее

+0

Когда вы говорите «показать»: вы имеете в виду, как данные выглядят в отчете или на экране? В этом случае обычно проще делать форматирование в отчете или на экране. T-SQL просто не является хорошим инструментом для сложного форматирования. –

ответ

0

Попробуйте это:

SELECT CASE CONVERT(DATE, @MyValue) WHEN '01/01/1800' THEN NULL ELSE CONVERT(DATE, @MyValue) END 

Или, если вы предпочитаете:

DECLARE @DateOnlyValue DATE 
SET @DateOnlyValue = CONVERT(DATE, @MyValue) 
SELECT CASE @DateOnlyValue WHEN '01/01/1800' THEN NULL ELSE @DateOnlyValue END 

Последнее просто DRY эр.

+0

Что такое @myvalue, должно быть – khan16

+0

@ khan16 - ваше значение. –

0

Вы можете просто сделать:

select (case when datecol > '1800-01-01' then convert(varchar(10), datecol, 121) end) 

Это преобразует значение в строку вида YYYY-MM-DD.

Для этого используется NULL. Если вы хотите, пустую строку:

select (case when datecol > '1800-01-01' 
      then convert(varchar(10), datecol, 121) 
      else '' 
     end) 

Это также предполагает, что значения с «1800-01-01» не имеет временную составляющую. Это кажется разумным для экстремального значения по умолчанию.

+0

не нравится «дата», кстати, я пишу это в сценарий – khan16

+0

это то, что я сейчас СЛУЧАЙ КОГДА A.svcdt1 = «18000101» ТОГДА Convert (NVARCHAR (20), A.SVCDT1) + - '+ Convert (nvarchar (20), A.SVCDT1) ELSE' ' END AS Service_Facility и получение следующего выхода 1 января 1800 12:00 AM-JAN 1 1800 12:00 AM, желаемым выходом будет только дата в этот формат 12/14/2012 (ограничение 10 символов) и все даты с 1800 годом будут пустыми – khan16

+1

@ khan16. , , 'date' является зарезервированным словом в SQL Server. Он был там как владелец места для любого имени вашей колонки. Вы хотите использовать 'convert()' путь, указанный в этом ответе. –