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

Получаване на броя дни от седмицата (неделя, понеделник, вторник) между две дати SQL

Предвид това, което мисля което се опитвате да получите, това трябва да го направи:

SET DATEFIRST 1

DECLARE
    @start_date DATETIME,
    @end_date DATETIME

SET @start_date = '2011-07-11'
SET @end_date = '2011-07-22'

;WITH Days_Of_The_Week AS (
    SELECT 1 AS day_number, 'Monday' AS day_name UNION ALL
    SELECT 2 AS day_number, 'Tuesday' AS day_name UNION ALL
    SELECT 3 AS day_number, 'Wednesday' AS day_name UNION ALL
    SELECT 4 AS day_number, 'Thursday' AS day_name UNION ALL
    SELECT 5 AS day_number, 'Friday' AS day_name UNION ALL
    SELECT 6 AS day_number, 'Saturday' AS day_name UNION ALL
    SELECT 7 AS day_number, 'Sunday' AS day_name
)
SELECT
    day_name,
    1 + DATEDIFF(wk, @start_date, @end_date) -
        CASE WHEN DATEPART(weekday, @start_date) > day_number THEN 1 ELSE 0 END -
        CASE WHEN DATEPART(weekday, @end_date)   < day_number THEN 1 ELSE 0 END
FROM
    Days_Of_The_Week


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте график на агент на SQL Server с T-SQL

  2. Обхват на променливата на SQL Server в съхранена процедура

  3. Съкратете всички таблици в база данни в SQL Server - SQL Server / TSQL урок, част 55

  4. Как да получите произволни редове от таблица на SQL Server - SQL Server / TSQL урок, част 117

  5. Проверете дали съществува временна таблица и изтрийте дали съществува, преди да създадете временна таблица