Skip to content

Commit 1d758a9

Browse files
authored
Document additional DateTimeOffset translations (#5334)
Document dotnet/efcore#38076
1 parent 204e115 commit 1d758a9

2 files changed

Lines changed: 22 additions & 2 deletions

File tree

entity-framework/core/providers/sql-server/functions.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
---
22
title: Function Mappings - Microsoft SQL Server Database Provider - EF Core
33
description: Function Mappings of the Microsoft SQL Server database provider
4-
author: SamMonoRT
5-
ms.date: 7/26/2023
4+
author: roji
5+
ms.date: 4/14/2026
66
uid: core/providers/sql-server/functions
77
---
88
# Function Mappings of the Microsoft SQL Server Provider
@@ -106,19 +106,26 @@ dateTimeOffset.AddMonths(months) | DATEADD(month, @mo
106106
dateTimeOffset.AddSeconds(seconds) | DATEADD(second, @seconds, @dateTimeOffset)
107107
dateTimeOffset.AddYears(years) | DATEADD(year, @years, @dateTimeOffset)
108108
dateTimeOffset.Date | CONVERT(date, @dateTimeOffset)
109+
dateTimeOffset.DateTime | CONVERT(datetime2, @dateTimeOffset) | EF Core 11.0
109110
dateTimeOffset.Day | DATEPART(day, @dateTimeOffset)
110111
dateTimeOffset.DayOfYear | DATEPART(dayofyear, @dateTimeOffset)
111112
dateTimeOffset.Hour | DATEPART(hour, @dateTimeOffset)
113+
dateTimeOffset.LocalDateTime | CONVERT(datetime2, @dateTimeOffset AT TIME ZONE CURRENT_TIMEZONE_ID()) | EF Core 11.0
112114
dateTimeOffset.Microsecond | DATEPART(microsecond, @dateTimeOffset) % 1000 | EF Core 10.0
113115
dateTimeOffset.Millisecond | DATEPART(millisecond, @dateTimeOffset)
114116
dateTimeOffset.Minute | DATEPART(minute, @dateTimeOffset)
115117
dateTimeOffset.Month | DATEPART(month, @dateTimeOffset)
116118
dateTimeOffset.Nanosecond | DATEPART(nanosecond, @dateTimeOffset) % 1000 | EF Core 10.0
119+
dateTimeOffset.Offset.TotalMinutes | CAST(DATEPART(tz, @dateTimeOffset) AS float) | EF Core 11.0
117120
dateTimeOffset.Second | DATEPART(second, @dateTimeOffset)
118121
dateTimeOffset.TimeOfDay | CONVERT(time, @dateTimeOffset)
122+
dateTimeOffset.ToOffset(offset) | SWITCHOFFSET(@dateTimeOffset, @offset) | EF Core 11.0
119123
dateTimeOffset.ToUnixTimeSeconds() | DATEDIFF_BIG(second, '1970-01-01T00:00:00.0000000+00:00', @dateTimeOffset)
120124
dateTimeOffset.ToUnixTimeMilliseconds() | DATEDIFF_BIG(millisecond, '1970-01-01T00:00:00.0000000+00:00', @dateTimeOffset)
125+
dateTimeOffset.UtcDateTime | CONVERT(datetime2, @dateTimeOffset AT TIME ZONE 'UTC') | EF Core 11.0
121126
dateTimeOffset.Year | DATEPART(year, @dateTimeOffset)
127+
new DateTimeOffset(dateTime) | TODATETIMEOFFSET(@dateTime, '+00:00') | EF Core 11.0
128+
new DateTimeOffset(dateTime, offset) | TODATETIMEOFFSET(@dateTime, @offset) | EF Core 11.0
122129
DateOnly.FromDateTime(dateTime) | CONVERT(date, @dateTime)
123130
dateOnly.AddDays(value) | DATEADD(day, @value, @dateOnly)
124131
dateOnly.AddMonths(months) | DATEADD(month, @months, @dateOnly)
@@ -143,6 +150,7 @@ EF.Functions.DateFromParts(year, month, day) | DATEFROMPARTS(@yea
143150
EF.Functions.DateTime2FromParts(year, month, day, ...) | DATETIME2FROMPARTS(@year, @month, @day, ...)
144151
EF.Functions.DateTimeFromParts(year, month, day, ...) | DATETIMEFROMPARTS(@year, @month, @day, ...)
145152
EF.Functions.DateTimeOffsetFromParts(year, month, day, ...) | DATETIMEOFFSETFROMPARTS(@year, @month, @day, ...)
153+
EF.Functions.DateTrunc(datepart, value) | DATETRUNC(@datepart, @value) | EF Core 11.0
146154
EF.Functions.IsDate(expression) | ISDATE(@expression)
147155
EF.Functions.SmallDateTimeFromParts(year, month, day, ...) | SMALLDATETIMEFROMPARTS(@year, @month, @day, ...)
148156
EF.Functions.TimeFromParts(hour, minute, second, ...) | TIMEFROMPARTS(@hour, @minute, @second, ...)

entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,18 @@ Period properties remain configured with `ValueGenerated.OnAddOrUpdate`, so thei
438438

439439
For more information, see the [full documentation on temporal tables](xref:core/providers/sql-server/temporal-tables#mapping-period-columns-to-clr-properties).
440440

441+
<a name="sqlserver-datetimeoffset-translations"></a>
442+
443+
### Additional DateTimeOffset and date/time translations
444+
445+
EF Core 11 adds several new SQL Server translations for `DateTimeOffset`. Properties such as `DateTime`, `UtcDateTime`, and `LocalDateTime` are now translated, allowing you to access the `DateTime` component directly in your queries: `DateTime` returns the date and time component without converting the offset, while `UtcDateTime` and `LocalDateTime` represent UTC and server-local conversions, respectively. `Offset.TotalMinutes` is also translated, giving access to the offset component, and `ToOffset(offset)` allows converting a `DateTimeOffset` to a different offset via SQL Server's `SWITCHOFFSET`.
446+
447+
You can also now construct a `DateTimeOffset` from a `DateTime` directly in LINQ queries, using `new DateTimeOffset(dateTime)` or `new DateTimeOffset(dateTime, offset)`, which translates to SQL Server's `TODATETIMEOFFSET` function.
448+
449+
In addition, `EF.Functions.DateTrunc()` is now available for truncating `DateTime`, `DateTimeOffset`, `DateOnly` and `TimeOnly` values to a specified precision (e.g. day, hour, minute), translating to SQL Server's [`DATETRUNC`](/sql/t-sql/functions/datetrunc-transact-sql) function.
450+
451+
For the complete list of date/time function translations, see the [SQL Server function mappings page](xref:core/providers/sql-server/functions).
452+
441453
## Cosmos DB
442454

443455
<a name="cosmos-complex-types"></a>

0 commit comments

Comments
 (0)