2014-10-08 5 views
2

По некоторым причинам следующие запросы возвращают один и тот же результат, несмотря на то, что они не должны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 

Но я не знаю, сделал ли разница или нет.

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

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

Edit:

SELECT CAST (GETDATE() AS DATE) 

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

+0

OK - но вы не сказали, что вы ** ** ищете для - что выход сделать вас * *хотеть** ?? Вы взглянули на новую функцию ['FORMAT'] (http://msdn.microsoft.com/en-us/library/hh213505.aspx) для SQL Server 2014? –

+0

Я предполагаю, что вы неправильно поняли, как даты (и даты) хранятся в SQL Server (и почти любой другой язык программирования) - у них нет какой-либо информации о форматировании, прикрепленной к ним - это всего лишь дата Информация. * Строки *, которые вы видите, это то, что происходит, когда вы запрашиваете инструмент (например, студию управления), чтобы * показать * информацию о дате. Но не путайте форматирование строк, которое студия управления применяет с фактическими * данными *, которые хранятся в столбце или переменной даты. –

+0

Прошу прощения, если я не был достаточно ясен, моя цель состояла в том, чтобы получить ЛЮБОЙ результат, кроме того, что я получал, спасибо, что указал на мою ошибку. –

ответ

1

Этот стиль имеет значение только в том случае, если выходной тип является буквальным, то есть 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); 
1

Вы должны использовать 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) 

Кроме того, проверьте ссылку ниже для того же: Convert Date format into DD/MMM/YYYY format in SQL Server

Смежные вопросы