Как получить только дату из информации DateTime в sqlserver? - PullRequest
2 голосов
/ 26 декабря 2011

У меня есть следующий SQL-запрос, который возвращает информацию в формате DateTime в формате месяца, например, декабрь или ноябрь:

SELECT     COUNT(DISTINCT dbo.UserQuiz.QuizID) AS [Total Number of Taken Quizzes], dbo.Divisions.DivisionName, DATENAME(Month, dbo.UserQuiz.DateTimeComplete) 
                      AS Month
FROM         dbo.UserQuiz INNER JOIN
                      dbo.Quiz ON dbo.UserQuiz.QuizID = dbo.Quiz.QuizID INNER JOIN
                      dbo.employee ON dbo.UserQuiz.Username = dbo.employee.Username INNER JOIN
                      dbo.Divisions ON dbo.employee.DivisionCode = dbo.Divisions.SapCode
GROUP BY dbo.Divisions.DivisionName, DATENAME(Month, dbo.UserQuiz.DateTimeComplete)

Я хочу просто получить дату в любом формате, таком как: мм-дд-гггг. Как это сделать?

Ответы [ 3 ]

1 голос
/ 26 декабря 2011
SELECT     COUNT(DISTINCT dbo.UserQuiz.QuizID) AS [Total Number of Taken Quizzes], dbo.Divisions.DivisionName, convert(varchar,dbo.UserQuiz.DateTimeComplete,110 ) 
                      AS Month
FROM         dbo.UserQuiz INNER JOIN
                      dbo.Quiz ON dbo.UserQuiz.QuizID = dbo.Quiz.QuizID INNER JOIN
                      dbo.employee ON dbo.UserQuiz.Username = dbo.employee.Username INNER JOIN
                      dbo.Divisions ON dbo.employee.DivisionCode = dbo.Divisions.SapCode
GROUP BY dbo.Divisions.DivisionName,convert(varchar,dbo.UserQuiz.DateTimeComplete,110) 
1 голос
/ 26 декабря 2011
select cast(convert(varchar, datefield, 112) as datetime)

Это для возврата в качестве даты и времени, если вам нужна строка - конвертируйте только с правильным номером формата вместо 112

Для серверной версии 2008+ вы можете использовать более простые и быстрые в GROUP BYконструкция пункта как

CAST(dbo.UserQuiz.DateTimeComplete as DATE)
0 голосов
/ 26 декабря 2011

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

DATEADD(MONTH, DATEDIFF(MONTH, 0, <i>your_datetime_value</i>), 0)

Вышеприведенное выражение возвращает полночь первого числа соответствующего месяца, например, для 2011-12-26 16:49:53.487 оно выдаст 2011-12-01 00:00:00.000.

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