SQL Server calculate days from current date excluding days from another table

sql calculate working hours between two dates excluding weekends and holidays
sql days between date and today
calculate working days between two dates in sql server
sql datediff between two dates
calculate days between two dates in sql query
sql business days holidays
sql exclude weekends from date range
how to calculate day in sql server

I am trying to write a query that allows me to take the following table:

| Username | Startdate | Points |
|----------|-----------|--------|
| XXY      | 15-03-18  |      0 |
| YYX      | 12-02-18  |      1 |
| ZZY      | 10-06-18  |      2 |

and calculate days from current day excluding the days in table 2 that a user has been absent.

| Username | Startdate | Enddate  |
|----------|-----------|----------|
| XXY      | 20-03-18  | 25-03-18 |

Also another question, I need both tables to have a row for each day until current date. How do I do it?

Update: I have tried this in table 1 DATEDIFF(DAY, Startdate,GETDATE()) this gives me the amount of days. But I need to subtract 5 days from this (see table 2)

select 
datediff(day, table1.StartDate, getdate()) - datediff(day, table2.StartDate, table2.Enddate)
from table1 
join table2 on table1.Username = table2.Username

SQL Server DATEDIFF Function By Practical Examples, To calculate the difference between two dates in years, months, weeks, etc., you See the valid date parts in the table below. start_date and end_date are the to compare the requested delivery date with the ship date in days and return if  The total of 8 days is actually incorrect as it is excluding the start date. Say for instance that for some reason you ended up working on the 25 th of December 2016 – a Christmas day. If you were to perform a working day calculation in SQL Server using the DATEDIFF function as shown in Script 4 , you would get an incorrect result of 0 total days as shown in Figure 2 .

One method would be to do the below:

USE Sandbox;
GO

CREATE TABLE Dates (SkipDate date);
GO

INSERT INTO Dates
VALUES ('20180605'),('20180617');
GO

WITH VTE AS (
    SELECT CONVERT(date,S) StartDate, CONVERT(date, E) EndDate
    FROM (VALUES('20180601','20180606'),
                ('20180601','20180618')) V(S,E))
SELECT StartDate,
       EndDate,
       DATEDIFF(DAY, StartDate, EndDate) AS DaysBetween,
       DATEDIFF(DAY, StartDate, EndDate) - SkipDates AS DaysMinusSkipped
FROM VTE
     CROSS APPLY (SELECT COUNT(*) AS SkipDates
                  FROM Dates
                  WHERE SkipDate >= StartDate
                    AND SkipDate <= EndDate) AS SD;
GO

If you wanted to create something that means you don't need to write that SQL everytime instead, you can create a table-value function:

CREATE FUNCTION dbo.DateDiffSkip (@StartDate date, @EndDate date)
RETURNS TABLE
AS RETURN

    SELECT DATEDIFF(DAY, @StartDate, @EndDate) - COUNT(SkipDate) AS DateDiffSkip
    FROM Dates D
    WHERE D.SkipDate >= @StartDate
      AND D.SkipDate <=  @EndDate;

GO

Then, your SQL would be:

WITH VTE AS (
    SELECT CONVERT(date,S) StartDate, CONVERT(date, E) EndDate
    FROM (VALUES('20180601','20180606'),
                ('20180601','20180618')) V(S,E))
SELECT StartDate,
       EndDate,
       DATEDIFF(DAY, StartDate, EndDate) AS DaysBetween,
       DDS.DateDiffSkip AS DaysMinusSkipped
FROM VTE
     CROSS APPLY dbo.DateDiffSkip(StartDate, EndDate) DDS;
GO
--Clean up
DROP FUNCTION DateDiffSkip;
DROP TABLE Dates;

Date Calculation Excluding Weekend & Holiday – SQLServerCentral, Date Calculation Excluding Weekend & Holiday – Learn more on the SQLServerCentral forums. I want to find the number of days excluding holidays and weekend. Either join to your source table or pass in Creation_date as a parameter. CrystalVis Change SQL Server collation - and it will fail. So when you need to add days and the result has to be a working day you can simply find your queried date in the table, retrieve it's WorkingDaysOrder, add 2 days (for example) and bring back it's associated Date.

This can be calculated with multiple DATEDIFF functions. This also calculates for multiple absences per user:

declare @t table ([UserName] char(3), [StartDate] Date, [Points] int)
insert into @t values ('XXY', '2018-03-15', 0), ('YYX', '2018-02-12', 1), ('ZZY', '2018-06-10', 2)

declare @a table ([UserName] char(3), [StartDate] Date, [EndDate] Date)
insert into @a values ('XXY', '2018-03-20', '2018-03-25')

select t.*, datediff(d, t.[StartDate], cast(getdate() as date)) - isnull(sum(datediff(d, a.[StartDate], a.[EndDate])), 0) as [DaysNotAbsent]
from @t t
left join @a a on t.UserName = a.UserName
group by t.UserName, t.StartDate, t.Points

Calculating Business Days and Excluding Holidays in SQL Server, Calculating Business Days and Excluding Holidays in SQL Server. I was recently asked how to determine the number of working days between two dates in SQL Another valid interval part is called "WEEKDAY" which returns some This is not all that uncommon; many companies will have a table that  The latest SQL Server articles from SQLServerCentral. Calculating Work-Days in T-SQL. Overview. One of the more serious questions in project scheduling, employee planning, and accounting of time

SQL Server – Calculating Business Days Between Two Dates (With , SQL Server – Calculating Business Days Between Two Dates (With Holiday Exclusion) “Today, I am calculating the number for days between two dates to get the response time in days but I would really like to exclude the weekends to In the table above, DAY_OF_WEEK 7 and 1 correspond to Saturday  SQL HOME SQL Intro SQL Syntax SQL Select SQL Select Distinct SQL Where SQL And, Or, Not SQL Order By SQL Insert Into SQL Null Values SQL Update SQL Delete SQL Select Top SQL Min and Max SQL Count, Avg, Sum SQL Like SQL Wildcards SQL In SQL Between SQL Aliases SQL Joins SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL Self Join SQL

SQL Script to Exclude Weekends and Holidays, This is really a T-SQL question and would be better off on StackOverflow. That said, you can use the following to determine if the date falls on a weekend: We can use DATEADD () function like below to Subtract days from DateTime in Sql Server. DATEADD () functions first parameter value can be day or dd or d all will return the same result. Below example shows how we can subtract two days from Current DateTime in Sql Server: SELECT GETDATE () 'Today', DATEADD (day,-2,GETDATE ()) 'Today - 2 Days'

How to calculate work days and hours in SQL Server, Like any other enterprise RDBMS system, SQL Server ships with The total of 8 days is actually incorrect as it is excluding the start date. SQL Server 2012 :: How To Calculate Dates Difference In A Same Table Sep 4, 2015 I have a table with appdt as first appointment date and the another record for the same customer# has follow up appointment.

Comments
  • Can you include an example of the code you've currently tired?
  • Hi Tomos, I added more info
  • No offense, but that data and result are extremely confusing. They seem to be unrelated. Username: XXY goes from Startdate: 15-03-18 to Startdate: 02-03-18. What is the relationship here? Also, what would your assumed calculation field look like in the situation of your results?