Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 обнуление минут  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
всем здрасьте. Нужно сгруппировать по времени. т.е.
есть:

2009-05-31 09:17:00
2009-05-31 09:18:00
2009-05-31 09:19:00
2009-05-31 10:19:00

нужно получить:
2009-05-31 09:00:00
2009-05-31 10:00:00

Не могли бы помочь.
4 июн 09, 17:22    [7266612]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
minya13_85
всем здрасьте. Нужно сгруппировать по времени. т.е.
есть:

2009-05-31 09:17:00
2009-05-31 09:18:00
2009-05-31 09:19:00
2009-05-31 10:19:00

нужно получить:
2009-05-31 09:00:00
2009-05-31 10:00:00

Не могли бы помочь.

забыл версию указать
Microsoft SQL Server 2005 - 9.00.3054.00 (Intel X86) Mar 23 2007 16:28:52 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
4 июн 09, 17:23    [7266616]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
...group by convert(char(нужной длины), поле_с_датой, 112)
4 июн 09, 17:26    [7266635]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
Александр Волок (def1983)
...group by convert(char(нужной длины), поле_с_датой, 112)
мне нужно сохранить формат datetime. потому что в дальнейшем я эту дату использую
4 июн 09, 17:27    [7266642]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
select cast(convert(char(нужной длины), поле_с_датой, 112) + ':00' as datetime), агрегации...
from ...
group by convert(char(нужной длины), поле_с_датой, 112)
4 июн 09, 17:29    [7266655]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Поправка:

select cast(convert(char(нужной длины), поле_с_датой, 112) + ':00:00' as datetime), агрегации...
from ...
group by convert(char(нужной длины), поле_с_датой, 112)
4 июн 09, 17:30    [7266668]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
Александр Волок (def1983)
select cast(convert(char(нужной длины), поле_с_датой, 112) + ':00' as datetime), агрегации...
from ...
group by convert(char(нужной длины), поле_с_датой, 112)
что-то не получается
применяю к этой дате
2009-05-31 09:17:00
конверт
convert(char(8), Дата, 112) получаю 20090531
, а нужно чтобы он часы оставил, а занулил только минуты
4 июн 09, 17:34    [7266699]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
select dateadd(hh, datepart(hh, getdate()), dateadd(dd, datediff(dd, 0, getdate()), 0))
?

для спящего время бодрствования равносильно сну
4 июн 09, 17:35    [7266705]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
char(13)
4 июн 09, 17:36    [7266711]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
Алексей2003
select dateadd(hh, datepart(hh, getdate()), dateadd(dd, datediff(dd, 0, getdate()), 0))
?

для спящего время бодрствования равносильно сну
дааа, то что надо, спасибо.
4 июн 09, 17:38    [7266733]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
Konst_One
char(13)
а тут любой Char ставить, не поможет, потому что 112 это только дата, без учета времени.
4 июн 09, 17:39    [7266739]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
minya13_85
применяю к этой дате
2009-05-31 09:17:00
конверт
convert(char(8), Дата, 112) получаю 20090531
, а нужно чтобы он часы оставил, а занулил только минуты
char(6) попробуйте
4 июн 09, 17:39    [7266742]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
minya13_85
Konst_One
char(13)
а тут любой Char ставить, не поможет, потому что 112 это только дата, без учета времени.
точно
4 июн 09, 17:41    [7266758]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
declare @t table(dt datetime)
insert into @t
select '20090531 09:17:00' union all
select '20090531 09:18:00' union all
select '20090531 09:19:00' union all
select '20090531 10:19:00'

select cast(d as datetime) as d
  from (select   convert(char(8), dt, 112) 
               + ' '            
               + convert(char(2), dt, 108) 
               + ':00:00' as d
          from @t
        ) as t
  group by d

d
-----------------------
2009-05-31 09:00:00.000
2009-05-31 10:00:00.000

(2 row(s) affected)
4 июн 09, 17:42    [7266772]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
minya13_85
Konst_One
char(13)
а тут любой Char ставить, не поможет, потому что 112 это только дата, без учета времени.


да что вы говорите ?

declare @Data datetime

set @Data =CONVERT(datetime, '20090531 09:17:00', 112)

select CONVERT(datetime,convert(char(13), @Data, 120)+':00:00',120) , @Data
4 июн 09, 17:45    [7266788]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
Паганель
declare @t table(dt datetime)
insert into @t
select '20090531 09:17:00' union all
select '20090531 09:18:00' union all
select '20090531 09:19:00' union all
select '20090531 10:19:00'

select cast(d as datetime) as d
  from (select   convert(char(8), dt, 112) 
               + ' '            
               + convert(char(2), dt, 108) 
               + ':00:00' as d
          from @t
        ) as t
  group by d

d
-----------------------
2009-05-31 09:00:00.000
2009-05-31 10:00:00.000

(2 row(s) affected)
спасибо Паганель, оригинально, но я сделал как показал Алексей2003
4 июн 09, 17:46    [7266792]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
Konst_One
minya13_85
Konst_One
char(13)
а тут любой Char ставить, не поможет, потому что 112 это только дата, без учета времени.


да что вы говорите ?

declare @Data datetime

set @Data =CONVERT(datetime, '20090531 09:17:00', 112)

select CONVERT(datetime,convert(char(13), @Data, 120)+':00:00',120) , @Data
не ну это уже другое, Вы сначала вытащили дату 112, потом конвертировали через 120 в datetime и прибавили минуты с нулями. а я говорил именно про 112, что в нем любую длину задавай, все равно только дату выдаст.
4 июн 09, 17:53    [7266833]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
что вы на 112 зациклились? у вас же каноническое представление даты ODBC
4 июн 09, 17:54    [7266841]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
CONVERT(CHAR(13), поле_с_датой, 126)
4 июн 09, 19:03    [7267192]     Ответить | Цитировать Сообщить модератору
 Re: обнуление минут  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SELECT CAST(D AS DATETIME)
FROM (SELECT CONVERT(CHAR(13), GETDATE(), 126)+':00:00' D) T
GROUP BY D;
4 июн 09, 19:14    [7267207]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить