Проблема SQL Server 2014 с функцией преобразования

По какой-то причине следующие запросы возвращают один и тот же результат, хотя они не должны

SELECT CONVERT(DATE, GETDATE(),101)
SELECT CONVERT(DATE, GETDATE(),102)
SELECT CONVERT(DATE, GETDATE(),103)
SELECT CONVERT(DATE, GETDATE(),104)
SELECT CONVERT(DATE, GETDATE(),105)-- Ad Infinitum (Tested up to 140)

Результат

2014-10-07

На всякий случай, сегодняшняя дата 7 октября 2014 года.

Технически я установил SQL Server 2014 на американском английском языке и ПЫТАЛСЯ изменить его с помощью

set dateformat dmy

Но я не знаю, повлияло это или нет.

Я испортил свою установку, должен ли я ее починить, удалить и переустановить, вообще отформатировать мою машину или это не связано.

Первый опубликованный вопрос, я считаю, что следовал правилам, как я их понял. Если я сделал ошибку, пожалуйста, сообщите мне.

Редактировать:

SELECT CAST (GETDATE() AS DATE)

Имеет тот же результат.


person Jorge Luis Alvarado    schedule 08.10.2014    source источник
comment
Хорошо, но вы не сказали, что вы ищете — какой результат вы хотите ?? Знакомы ли вы с новой функцией FORMAT для SQL Server 2014? ?   -  person marc_s    schedule 08.10.2014
comment
Я предполагаю, что вы неправильно поняли, как даты (и даты и время) хранятся в SQL Server (и почти в любом другом языке программирования) - к ним не прикреплена какая-либо информация о форматировании - это просто информация о дате . строки, которые вы видите, — это то, что происходит, когда вы просите инструмент (например, студию управления) показать вам информацию о дате. Но не путайте форматирование строк, которое применяет Management Studio, с фактическими данными, которые хранятся в date столбце или переменной.   -  person Damien_The_Unbeliever    schedule 08.10.2014
comment
Извините, если я был недостаточно ясен, моя цель состояла в том, чтобы получить ЛЮБОЙ результат, отличный от того, который я получил, спасибо, что указали на мою ошибку.   -  person Jorge Luis Alvarado    schedule 08.10.2014


Ответы (2)


Стиль имеет значение только в том случае, если тип вывода является буквальным, то есть varchar или nvarchar. То, что вы пытаетесь сделать, это преобразовать дату и время в дату (результат не зависит от стиля), а затем разрешить клиентскому приложению отображать его так, как ему нравится.

Однако в приведенном ниже примере различия очевидны:

select convert(varchar, cast(getdate() as date), 101);
select convert(varchar, cast(getdate() as date), 102);
select convert(varchar, cast(getdate() as date), 103);
select convert(varchar, cast(getdate() as date), 104);
person Roger Wolf    schedule 08.10.2014

Вам нужно использовать VARCHAR вместо DATE в функции CONVERT. Как показано ниже:

SELECT CONVERT(varchar, GETDATE(),101)
SELECT CONVERT(varchar, GETDATE(),102)
SELECT CONVERT(varchar, GETDATE(),103)
SELECT CONVERT(varchar, GETDATE(),104)
SELECT CONVERT(varchar, GETDATE(),105)

Кроме того, ознакомьтесь с приведенной ниже ссылкой для того же: 2008">Преобразование формата даты в формат ДД/МММ/ГГГГ в SQL Server

person Paresh J    schedule 08.10.2014