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

Вземете неделна дата между две дати и последния ден от един месец mysql

Тъй като сега споменахте, че нямате таблица за датите, можете да подходите по този начин, ако не искате да добавите обща календарна таблица към вашата база данни.

declare @startdate datetime 
declare @enddate datetime
DECLARE @startdateLoop datetime

select @startdate = CAST(start as DATE), @enddate = CAST(end_date as DATE) from #t
set @startdateLoop = @startdate
CREATE TABLE #tempCal
  (dates datetime)

  WHILE @startdateLoop != @enddate 
  BEGIN
  INSERT INTO #tempCal
  SELECT @startdateLoop

  SET @startdateLoop = DATEADD(dd, 1, @startdateLoop)
  END

  SELECT * FROM #tempCal
  WHERE dates between @startdate and @enddate and DAYOFWEEK(dates) = 1

Можете да превърнете това в процедура, ако желаете.

Все пак би било хубаво, ако ИМАТЕ таблица с календар; както Тим предложи.



  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 Limit LEFT JOIN Подзаявка след присъединяване

  2. Извикване на недефинирана функция session_register()

  3. MySQL, Проверете дали съществува колона в таблица с SQL

  4. Използване на агрегатни функции (SUM, AVG, MAX, MIN, COUNT, DISTINCT) в MySQL

  5. Изчакваща заявка за приятелство за таблица с приятели и грабване на данни от други таблици