Запрос данных столбца между определенными временами.Конкретно между установленными часами - PullRequest
0 голосов
/ 02 мая 2019

У меня есть столбец временных меток, и я хочу посчитать количество строк в столбце только между определенными часами ТЕКУЩЕЙ ДАТЫ.Формат даты данных 2 мая 2019 14:18.Мне нужно запросить эти данные в период с 12:30 до 13:30. Я не могу понять, как извлечь часы и минуты из отметки времени, поэтому он возвращает только строки между этими значениями текущего дня.

Имя моего столбца Outfeed_Place_Time, и я пытался посмотреть, ГДЕ столбец между DETEPART ЧАСОВОЙ GETDATE и DATEPART MINUTE GET DATE, и он не работает.

SELECT
COUNT(Outfeed_Place_Time) AS Parts_Hour_Parts
FROM PartData_GKN05_H
WHERE 
Outfeed_Place_Time BETWEEN ((DATEPART(HOUR, GETDATE()) = 12) AND (DATEPART(MINUTE, GETDATE()) = 30)) AND ((DATEPART(HOUR, GETDATE()) = 1) AND (DATEPART(MINUTE, GETDATE()) = 30))

Я надеюсь получить счетвсех строк с отметкой времени между 12:30 и 1:30, но я получаю сообщение об ошибке "Неверный синтаксис рядом с '='"

1 Ответ

0 голосов
/ 02 мая 2019

Я надеюсь, что вы на самом деле сохраняете свои даты как дату-время вместо того, чтобы иметь "формат", который указывает данные varchar.

Предполагая, что вы сохраняете это как даты, вы могли бы что-то сделать в этом направлении. Обратите внимание, что сначала нужно преобразовать дату в дату, а затем обратно в дату и время, потому что вы не можете добавить минуты к типу даты. Также я предпочитаю разделять больше и меньше, чем вместо использования между ними. Между может быть очень некрасиво, особенно с датами. https://sqlblog.org/2011/10/19/what-do-between-and-the-devil-have-in-common

where Outfeed_Place_Time > dateadd(minute, 750, convert(datetime, convert(date, Outfeed_Place_Time))) --midnight plus 750 minutes is 12:30 pm
    AND Outfeed_Place_Time < dateadd(minute, 810, convert(datetime, convert(date, Outfeed_Place_Time))) --midnight plus 810 minutes is 1:30 pm

- EDIT -

Чтобы получить только строки для текущего дня, просто измените логику dateadd.

where Outfeed_Place_Time > dateadd(minute, 750, convert(datetime, convert(date, getdate()))) --midnight plus 750 minutes is 12:30 pm
    AND Outfeed_Place_Time < dateadd(minute, 810, convert(datetime, convert(date, getdate()))) --midnight plus 810 minutes is 1:30 pm
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...