sql >> Databáze >  >> RDS >> Sqlserver

Získejte počet pracovních dnů (neděle, pondělí, úterý) mezi dvěma daty SQL

Vzhledem k tomu, co si myslím se snažíte získat, mělo by to stačit:

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. Chyba Oracle ORA-06512

  2. mysql ERROR 1064 (42000):Máte chybu v syntaxi SQL;

  3. Spojení dvou pracovních SQL dotazů dostane špatné výsledky - Kde dělám chybu

  4. Záleží na velikosti použité s NVARCHAR?