Как я могу уменьшить серию подробных отметок времени с часами и минутами до даты? - PullRequest
1 голос
/ 22 ноября 2011

У меня есть таблица данных, в которой дата записывается как год-месяц-день час: минута: секунда, как показано ниже.

2011-10-20 10:48:41, 2011-10-20 10:51:37, 2011-11-20 11:01:46 , 2011-11-20 11:16:03 ,2011-11-20 12:02:33

Каждая метка времени соответствует определенному элементу.Я пытаюсь подсчитать количество элементов в день, но когда я пытаюсь сгруппировать по этой дате, это дает мне список всех из них, потому что отметки времени очень специфичны.Есть ли способ урезать отметку времени, чтобы она смотрела только на 2011-10-20 против 2011-10-20 10: 48: 41.

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

Ответы [ 2 ]

0 голосов
/ 22 ноября 2011

В T-SQL показано, как удалить метку времени из даты и времени.CONVERT (DATETIME, FLOOR (CONVERT (FLOAT, [DateColumn])))

В .NET все объекты datetime имеют свойство Date, которое дает вам часть даты без отметки времени.Например, если у вас есть имя объекта datetime myDate, тогда myDate.Date выдаст вам новый объект, содержащий только часть даты.

РЕДАКТИРОВАТЬ: после прочтения вашего вопроса я пришел к выводу, что вы пытались это сделатьв SQL.Я приведу вам быстрый пример.

SELECT COUNT(*) AS DailyItemCount, NewItemDate
FROM (  
    SELECT ItemId,
    CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, ItemDate))) AS NewItemDate
    FROM MyTable
) AS NoTimeTable
GROUP BY NoTimeTable.NewItemDate
0 голосов
/ 22 ноября 2011

Я не знаю, какой язык программирования вы используете, но существует множество инструментов для анализа даты и времени.Например, есть метод DateTime.Parse() для платформы .NET.

Если вы не хотите использовать инструменты инфраструктуры, вы всегда можете использовать String.split() в строках даты и времени и передавать пробел в качестве разделителя., а затем сохраните только первый элемент массива результатов.

...