Я использую SQL Server 2008 R2, и у меня есть поле StartDate в моих таблицах, которое выглядит следующим образом:

1977-10-17 00: 00: 00.000

Как мне изменить эти значения, чтобы они представляли 10-17-1977? Кроме того, если дата 1900-01-01 00: 00: 00.000, я хочу изменить ее на нулевое значение. Есть ли команда или хранимая процедура для этих типов изменений?

Спасибо Ник

0
Nick 28 Апр 2014 в 22:43

4 ответа

Лучший ответ

Вероятно, вы захотите использовать convert, чтобы получить нужный формат, например:

select convert(varchar(10), MyColumn, 110) from MyTable;

Здесь мы преобразуем дату и время в символьное значение, но с определенным стилем даты (стиль 110).

Ваша пустая проблема может быть отсортирована с помощью case или с помощью nullif функция:

select nullif(MyColumn, '19000101') from MyTable;
select case when MyColumn = '19000101' then null else MyColumn end from MyTable;

Обратите внимание, что я предполагаю, что MyColumn хранится как datetime или аналогичный тип данных. Если нет, то вы можете cast их как таковые в соответствии с приведенной выше документацией.

Не стесняйтесь комбинировать функции, как в:

select convert(varchar(10), nullif(MyColumn, '19000101'), 110) from MyTable;
1
Tim Lehner 28 Апр 2014 в 18:55

Пытаться

declare @date varchar(10)
set @date = CONVERT(varchar(10),@startdate,110)
2
Sajad Karuthedath 28 Апр 2014 в 18:58
SELECT CASE WHEN  StartDate = '1900-01-01 00:00:00.000' THEN NULL
         ELSE CONVERT(VARCHAR(10), StartDate , 110)
       END AS StartDate 

FROM Table_Name
1
M.Ali 28 Апр 2014 в 18:46

Если вы хотите показать время в запрошенном формате даты, попробуйте:

SELECT CONVERT(VARCHAR(10), GETDATE(), 110) + substring(CONVERT(VARCHAR(23), GETDATE(), 121),12,12)

Для сравнительного перечисления различных форматов дат с помощью команды CONVERT используйте код по адресу http://rossql.blogspot.com/2014/04/sql-format-of-date-and-time-way-i-like.html

0
RosSQL 5 Май 2014 в 20:11