Mysql
 sql >> база данни >  >> RDS >> Mysql

Sum datediff в минути с MySQL

Вашето състояние

WHERE tStart >= '2011-04-04' AND tEnd <= '2011-04-04'

Доста досигурява че единствените записи, които ще останат, са къде

tStart = tEnd = '2011-04-04'

Разбира се, че DATEDIFF между тях дава 0, за обща обща сума от 0. Всъщност DATEDIFF игнорира частта от времето, така че трябва да използвате TIMEDIFF + TIME_TO_SEC

SELECT SUM(TIME_TO_SEC(TIMEDIFF(tEnd, tStart))/60)
FROM tasks
WHERE tStart >= '2011-04-04' AND tEnd <= adddate('2011-04-04', interval 1 day)

Забележете промяната в клаузата WHERE. Ако се опитвате да кажете, започнал по всяко време днес и приключил по всяко време днес, тогава диапазонът трябва да бъде (вече се предполага начало <край)

WHERE tStart >= '2011-04-04'
  AND tEnd < adddate('2011-04-04', interval 1 day)

Можете да го кодирате твърдо до 2011-04-05, но с помощта на < (по-малко от) и добавянето на един ден към крайното ограничение е това, което показвам тук.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Автоматично изтриване на изтекъл ред с данни в MySQL

  2. Как да се отървете от грешката в MySQL „Подготвеното изявление трябва да бъде подготвено отново“

  3. Как да актуализирате вложен тип данни JSON в MySQL 5.7

  4. Може ли една таблица да има два външни ключа?

  5. SQL обединява дублиращи се редове и обединява стойности, които са различни