2
Answers

Get the Date time between two dates.

I have two dates like '01-14-18 09:00:00 PM' and 01-15-18 08:30:00 AM
 
Now I want to get the table with columns like
 
DayName          StartTime            EndTime 
 Sunday             09:00:00             23.59.59
MonDay             00:00:00             08.30.00
 
 
Means I want a total time in each day.
 
Please, guys, help me. 
 
 
Answers (2)
1
Manav Pandya

Manav Pandya

NA 7.1k 24k 7y
Hello 
 
Find folowing snippet as per your provided date :
 
  1. --For total year difference  
  2. ELECT DATEDIFF(year, '2018/01/14''2018/01/15') AS Year;   
  3. --For total Months difference  
  4. ELECT DATEDIFF(MONTH, '2018/01/14''2018/01/15') AS Months;  
  5. --For total Days difference  
  6. ELECT DATEDIFF(DAY, '2018/01/14''2018/01/15') AS Days;  
  7. --For total Hour difference  
  8. ELECT DATEDIFF(HOUR, '2018/01/14''2018/01/15') AS Hour;  
  9. --For total Minutes difference  
  10. ELECT DATEDIFF(MINUTE, '2018/01/14''2018/01/15') AS Minute;  
  11. --For total Seconds difference  
  12. ELECT DATEDIFF(SECOND, '2018/01/14''2018/01/15') AS Second;  
  13. --For total Seconds difference  
  14. ELECT DATEDIFF(MILLISECOND, '2018/01/14''2018/01/15') AS Milliseconds;  
Thanks 
0
Piyush Pansuriya

Piyush Pansuriya

NA 2.1k 124.6k 7y
Hello,
Try This :
 
  1. DECLARE @FromDate DATETIME, @ToDate DATETIME, @TotalDays INT, @intI INT  
  2. DECLARE @TimeTable TABLE (DAY VARCHAR(50), START_TIME VARCHAR(50), END_TIME VARCHAR(50))  
  3.   
  4.   
  5. SET @FromDate = '2018-01-09 10:12:00.000'  
  6. SET @ToDate = '2018-01-12 16:04:51.000'  
  7. SET @TotalDays = DATEDIFF(DAY,@FromDate,@ToDate)+1  
  8. SET @intI=0  
  9.   
  10. WHILE (@intI < @TotalDays)  
  11. BEGIN  
  12.   
  13. INSERT INTO @TimeTable( DAY, START_TIME, END_TIME )  
  14.   
  15. SELECT DATENAME(WEEKDAY,DATEADD(DAY,@intI,@FromDate))  
  16. CASE WHEN @intI=0 THEN CONVERT(VARCHAR(8), @FromDate, 108) ELSE '00:00:00' END  
  17. CASE WHEN @intI<>@TotalDays-1 THEN '23:59:59' ELSE CONVERT(VARCHAR(8), @ToDate, 108) END  
  18.   
  19.   
  20. SET @intI = @intI + 1  
  21. END  
  22.   
  23. SELECT * FROM @TimeTable