Вывод только даты
От: p_sergey  
Дата: 19.05.08 06:23
Оценка:
В БД SQL server'a есть таблица колонкой формата datetime в нее данные заносятся посредством функции getdate(), мне нужно получить данные за определенный период сгруппированный по дате, но есть одна проблема группировка идет не только по дате но и по времени, что приводит к тому что вместо того чтобы в одной строке показать сумму данных за один день, SQL Server 2000 выводит все строки которые были занесены в этот день, потому что группировка идет не только по дате, но и по времени.
Есть ли возможность извлечь из колонки только значение даты (без значения времени) встроенными в SQL server функциями, или же придется представлять колонку в виде строки, с помощью функция вывода числа, месяца и года, что крайне не желательно?
Заранее благодарен!
Re: Вывод только даты
От: wellwell Австралия https://www.softperfect.com
Дата: 19.05.08 06:25
Оценка:
"p_sergey" <74411@users.rsdn.ru> wrote in message news:2955363@news.rsdn.ru...
> Заранее благодарен!

RTFM
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Вывод только даты
От: p_sergey  
Дата: 19.05.08 06:30
Оценка:
Здравствуйте, wellwell, Вы писали:

W>"p_sergey" <74411@users.rsdn.ru> wrote in message news:2955363@news.rsdn.ru...

>> Заранее благодарен!

W>RTFM


Мне надо чтобы данные в строке выводились в формате даты, а не строки, для сортировки по ней
Re[3]: Вывод только даты
От: Niteshade Россия  
Дата: 19.05.08 06:45
Оценка:
Здравствуйте, p_sergey, Вы писали:
_>Мне надо чтобы данные в строке выводились в формате даты, а не строки, для сортировки по ней
cast
convert
Re: Вывод только даты
От: ZAMUNDA Земля для жалоб и предложений
Дата: 19.05.08 08:58
Оценка:
Здравствуйте, p_sergey, Вы писали:

_>Есть ли возможность извлечь из колонки только значение даты (без значения времени) встроенными в SQL server функциями, или же придется представлять колонку в виде строки, с помощью функция вывода числа, месяца и года, что крайне не желательно?

1. Тебе уже посоветовали стандартный способ, через CONVERT. Учись пользоваться поиском.
2. Я, лично, играюсь с внутренним представлением даты в MSSQL. Для обрезания даты/времени это наиболее быстрый способ, а для (лирическое отступление) округления до дней/часов/минут и т.д. быстрее работает DATEADD+DATEDIFF способ. Поищщи на форуме -- была тема.

CREATE FUNCTION dbo.EXTRACTDATE
    ( 
    @Value AS DATETIME
    )
RETURNS DATETIME
AS
BEGIN    
    RETURN CAST((SUBSTRING(CAST(@Value AS BINARY(8)), 1, 4) + CAST(0 AS BINARY(4))) AS DATETIME)
END
GO

CREATE FUNCTION dbo.EXTRACTTIME
    ( 
    @Value AS DATETIME
    )
RETURNS DATETIME
AS
BEGIN    
    RETURN CAST((CAST(0 AS BINARY(4)) + SUBSTRING(CAST(@Value AS BINARY(8)), 5, 4)) AS DATETIME)
END
GO
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re: Вывод только даты
От: tarasich  
Дата: 19.05.08 10:35
Оценка:
Здравствуйте, p_sergey, Вы писали:

_>В БД SQL server'a есть таблица колонкой формата datetime в нее данные заносятся посредством функции getdate(), мне нужно получить данные за определенный период сгруппированный по дате, но есть одна проблема группировка идет не только по дате но и по времени, что приводит к тому что вместо того чтобы в одной строке показать сумму данных за один день, SQL Server 2000 выводит все строки которые были занесены в этот день, потому что группировка идет не только по дате, но и по времени.

_>Есть ли возможность извлечь из колонки только значение даты (без значения времени) встроенными в SQL server функциями, или же придется представлять колонку в виде строки, с помощью функция вывода числа, месяца и года, что крайне не желательно?
_>Заранее благодарен!

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

select
from
table1
group by floor(cast(datetimecolumn as float))
Re[2]: Вывод только даты
От: ZAMUNDA Земля для жалоб и предложений
Дата: 22.01.09 21:44
Оценка:
Здравствуйте, tarasich, Вы писали:

T>поскольку дата хранится как значение с плавающей точкой, причем время идет после запятой,

Садись ДВА!

T>то как вариант

T>select
T>from
T>table1
T>group by floor(cast(datetimecolumn as float))
А если посмотришь в план выполнения запроса, то увидишь что MSSQL это через CONVERT(VARCHAR, @date, 112) делает.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.