2011-12-13 4 views
1

У меня есть таблица, которая состоит из поля Date Time.Время, отличное от таблицы SQL

Proccesses (Id, как межд, RunDate в DateTime) мне нужно запустить Distinct по RunDate, как раз без секунды

For Example 

ID  RunDate 
1   2011-12-13 12:36:26.483 
2   2011-12-12 12:37:22.421 
3   2011-12-11 12:36:44.421 

Мне нужно получить на выходе

Output 
12:01 
12:03 

Для того, чтобы получить это я использую следующий SQL и его работу

SELECT DISTINCT DATENAME(hour, RunDateTime) + ':' + 
DATENAME(mi, RunDateTime) AS d 
from Proccesses 

P p РОБЛЕМА, что если минут меньше, чем 10, например 8 я получать одну цифру «8», и я хочу получить две цифры 08

Например я получаю 12: 8, и мне нужно получить 12: 08

ответ

1

попробовать

SELECT DISTINCT 
RIGHT ('00' + CAST(DATENAME(hour, RunDateTime) AS VARCHAR(2)), 2) + ':' + 
RIGHT ('00' + CAST(DATENAME(mi, RunDateTime) AS VARCHAR(2)), 2) 
from Proccesses 

в качестве альтернативы вы можете использовать CONVERT и обрабатывать результат строк соответственно ...

EDIT: пожалуйста, увеличьте the answer from Joe Stefanelli, если вы в конечном итоге используете опцию CONVERT.

+0

Отличная идея, редактирующая ваш ответ, чтобы предложить CONVERT. Хотел бы я подумать об этом. О, подождите, [я сделал] (http://stackoverflow.com/a/8495969/341251). ;-) –

+1

Да, вы сделали ... Я просто искал Google, а затем вложил ее в свой ответ ... хотя моя паста была не такой тщательной, как ваша, так как вы предоставили рабочий образец с CONVERT, и я этого не сделал. и теперь я добавил еще один EDIT :-) – Yahia

0

CONVERT стиль 108 вернет hh: mm: ss. Использование CHAR (5) для типа данных будет возвращать только часть hh: mm.

SELECT DISTINCT CONVERT(CHAR(5), RunDateTime, 108) AS d 
    FROM Processes 
0
SELECT RIGHT(CONVERT(VARCHAR,RunDateTime),7) 

Вы можете раздеться в AM/PM, если вы хотите.