2013-07-01 2 views
1

У меня есть база данных, где у меня есть два столбца - дата (вкл время.) И минут - следующим образом:SQL Select Count Column Между двумя раз

Open_Time                                                   минуту
2013-01-01 09: 00: 00,000     2013-01-01 09: 01: 00,000     2013-01-01 09: 02: 00,000     2013-01-01 09: 03: 00,000     2013-01-01 09: 04: 00,000     2013-01-01 09: 05: 00,000    

Как считать минуты между первым и последним разом даты?

выберите COUNT (минуту)
от test_table
где open_time между '2013-01-01 09: 00: 00.000' и '2013-01-01 09: 05,000'

делает не работает для меня.

Мне нужно будет считать минуты как текущее время - время открытия в будущем.

Благодарим вас за отзыв!

ответ

1

SQL выглядит нормально, хотя он возвращает 6. Вам нужно это или вы хотите 5? Вы всегда можете начинать критерии SELECT с 09: 01: 00.000, если это то, что вы хотите.

SQLfiddle здесь: http://sqlfiddle.com/#!2/d3f13/2

+0

Спасибо, вероятно, проблема в моем db, поскольку значения не сортируются должным образом день за днем. Поэтому моя команда должна работать. – DNac

3

для MySQL может быть можно использовать:

SELECT TIMESTAMPDIFF(MINUTE,'2013-01-01 09:00:00.000','2013-01-01 09:05.000') ; // return result as minutes 

прочитать здесь: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

+0

Звучит неплохо ...... +1 для вашего ответа .... – milanpanchal

+1

SELECT TIMESTAMPDIFF (MINUTE, '2013-01-01 09: 00: 00.000', '2013-01-01 09: 05.000') будет также обратная разница во времени в минуту. – milanpanchal

+0

+1 для вашего комментария. Спасибо –

1

Я не получаю именно то, что вы хотите. Но если вы хотите извлечь минута из своей даты, используйте следующий запрос.

SELECT EXTRACT(MINUTE FROM Open_Time) FROM test_table; 

SELECT EXTRACT(MINUTE FROM Open_Time)-10 FROM test_table; 

Вышеуказанный запрос даст только разницу в минуту.так что проверить вас день, час, минута, секунды на основе ваших критериев

+0

Благодарим вас за ответ. Мне понадобится следующее: подсчет количества минут за интервал времени. Я буду считать SLA таким образом из моей вспомогательной таблицы. Поэтому мне нужно будет подсчитать количество минут между текущим временем (из вспомогательной таблицы) и временем открытия. Так что если время открытия было 20.6.2013 в 09:00, мне нужно будет подсчитать количество минут между сегодняшним днем ​​и этим датом. Имеет смысл? – DNac

+0

Мне очень приятно, если я вам помогу. – milanpanchal

+0

mysql> SELECT TIMESTAMPDIFF (MINUTE, '2013-06-20 09:00', '2013-07-01 15:12'); – milanpanchal

0

В SQL Server вы можете использовать функцию DATEDIFF, которым принимают folowing параметры: DATEDIFF (DATEPART, StartDate, дата окончания) и возвращает количество (INT) между определенными дата границы для выбранного DATEPART, так что вы могли бы использовать что-то вроде этого:

select DATEDIFF(mi,MIN(opentime),MAX(opentime)) AS 'minutes' 
from test_table 
where open_time between '2013-01-01 09:00:00.000' and '2013-01-01 09:05.000' 

вы также облачным подсчета минут из колонки «минут», но это будет очень трудно сосчитать их с текущей датой (если, каждый раз, когда считая, что вы вставляете текущее время в таблицу или создаете таблицу temp)!

+0

Спасибо. Это может быть полезно. Это будет тяжело позже. Мне нужно будет вычислить количество минут от открытого времени (билета) до настоящего момента. Я не знаю, с чего начать. Например. билет имеет открытое время 20.6.2013 09:00, мне нужно будет вычислить временной интервал (минуты) с этой даты до настоящего времени. Однако главной проблемой здесь я также должен считать рабочие часы 09-17. Вот почему у меня есть временная таблица (пример в моем первом вопросе) с отмеченными рабочими часами и праздниками. С некоторой помощью эта таблица temp мне хотелось подсчитать общие минуты. – DNac

+0

Хм, тогда вы должны использовать некоторую математику, чтобы извлечь только рабочие минуты из общего количества минут. Если вы можете, возможно, будет легче написать эту логику в приложении! – dixpac

+0

У меня есть это. У меня есть стол (пример выше), где годы расходятся день за днем ​​(за исключением выходных и праздничных дней), минута за минуту, поэтому один день имеет 481 ряд (09 - 17) .. тяжелая часть будет делать подсчет в ETL, поэтому я подсчитываю разницу между временем открытия и текущим временем. – DNac