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

Генериране на дати между периоди от време

Лесно за SQL 2005+; по-лесно, ако имате числа или таблица за изчисление. По-долу го фалшифицирах:

DECLARE @StartDate DATE = '20110901'
  , @EndDate DATE = '20111001'

SELECT  DATEADD(DAY, nbr - 1, @StartDate)
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS Nbr
          FROM      sys.columns c
        ) nbrs
WHERE   nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate)

Ако имате таблица за изчисление, заменете подзаявката с таблицата. Без рекурсия.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работи SET ROWCOUNT в SQL Server

  2. Каква е разликата между използването на кръстосано свързване и поставянето на запетая между двете таблици?

  3. Не може да се използва UPDATE с клауза OUTPUT, когато има тригер в таблицата

  4. Трябва ли да проектирам таблица с първичен ключ varchar или int?

  5. Най-бързият начин за премахване на нечислови знаци от VARCHAR в SQL Server