At times we come across some cases where we need to extract date and time for a certain period of time (year, month, day, hour, minutes, seconds etc.). In earlier version of SQL Server (earlier than 2022), we use multiple functions like DATEADD, DATEDIFF etc. to achieve it.
In SQL Server 2022, a new function namely DATETRUNC() shipped which solved this problem. Now, we can just use DATETRUNC() function to extract date and time till any date and time parts.
In the given below diagram, you can see the different date & time parts which can be easily extracted by DATETRUNC() function.

Example:
Let me demonstrate the functionality of DATETRUNC() function by giving below example.
DECLARE @DateTime DATETIME2
SET @DateTime = '2022-10-27 12:02:31.9033333';
SELECT @DateTime AS [Current Date]
, DATETRUNC(YEAR,@DateTime) AS [DateTrunc Function]
,'Extract Date Till The YEAR' AS [Description]
UNION
SELECT @DateTime AS [Current Date]
, DATETRUNC(QUARTER,@DateTime) AS [DateTrunc Function]
,'Extract Date Till The QUARTER' AS [Description]
UNION
SELECT @DateTime AS [Current Date]
, DATETRUNC(MONTH,@DateTime) AS [DateTrunc Function]
,'Extract Date Till The MONTH' AS [Description]
UNION
SELECT @DateTime AS [Current Date]
, DATETRUNC(WEEK,@DateTime) AS [DateTrunc Function]
,'Extract Date Till The WEEK' AS [Description]
UNION
SELECT @DateTime AS [Current Date]
, DATETRUNC(DAY,@DateTime) AS [DateTrunc Function]
, 'Extract Date Till The DAY' AS [Description]
UNION
SELECT @DateTime AS [Current Date]
, DATETRUNC(HOUR,@DateTime) AS [DateTrunc Function]
, 'Extract Date Till The HOUR' AS [Description]
UNION
SELECT @DateTime AS [Current Date]
, DATETRUNC(MINUTE,@DateTime) AS [DateTrunc Function]
, 'Extract Date Till The MINUTE'AS [Description]
UNION
SELECT @DateTime AS [Current Date]
, DATETRUNC(SECOND,@DateTime) AS [DateTrunc Function]
, 'Extract Date Till The SECOND' AS [Description]
UNION
SELECT @DateTime AS [Current Date]
, DATETRUNC(MILLISECOND,@DateTime) AS [DateTrunc Function]
, 'Extract Date Till The MILLISECOND' AS [Description]
UNION
SELECT @DateTime AS [Current Date]
, DATETRUNC(MICROSECOND,@DateTime) AS [DateTrunc Function]
, 'Extract Date Till The MICROSECOND' AS [Description];
GO
--OUTPUT

Conclusion:
I found the DATETRUNC() function very useful; earlier we used multiple functions to extract date and time till whichever time period we needed, but now we can achieve it with the help of this function.































