实体框架LINQ调用switchoffset()函数
我有一个表,其中一列是datetimeoffset类型。我正在使用EF Core,如何调用sql内置函数switchoffset()?我已经有了用户的时区值,但不知道如何调用此函数将datetimeoffset值转换为用户自己的时间 我尝试了“SqlFunctions”,但没有这样的函数可用 谢谢 一,。在静态类中添加自定义/内置函数 2.正确映射这些功能: 3.在LINQ中使用它:实体框架LINQ调用switchoffset()函数,linq,entity-framework-core,Linq,Entity Framework Core,我有一个表,其中一列是datetimeoffset类型。我正在使用EF Core,如何调用sql内置函数switchoffset()?我已经有了用户的时区值,但不知道如何调用此函数将datetimeoffset值转换为用户自己的时间 我尝试了“SqlFunctions”,但没有这样的函数可用 谢谢 一,。在静态类中添加自定义/内置函数 2.正确映射这些功能: 3.在LINQ中使用它: 如果您的时区偏移量是静态的(您的用户国家是静态的,但日期时间存储在UTC中),一种解决方案是使用计算列: en
如果您的时区偏移量是静态的(您的用户国家是静态的,但日期时间存储在UTC中),一种解决方案是使用计算列:
entity.Property(e => e.TheDateTimeInIRIran).HasComputedColumnSql("(SWITCHOFFSET([MyDateTime], '+03:30'))", false);
您还可以将日期从greg转换为jalali,例如:
entity.Property(e => e.TheDateTimeInIRIran).HasComputedColumnSql("(FORMAT(SWITCHOFFSET([MyDateTime], '+03:30'), 'yyyy/MM/dd HH:mm:ss', 'fa-ir'))", false);
或者在时区使用支持夏令时的
子句(SQL Server 2016+)。您是否找到了这样做的方法。如果你能找到一个解决办法,我会帮你很多。不,我还没弄明白。我现在使用.NET函数来转换值。像这样吗?
...
.Select(i => new
{
TheDateTimeInUserTimeZone = CustomFunctions.ChangeTimeZoneOffset(i.MyDateTime, timeZoneOffsetVariable)
}
entity.Property(e => e.TheDateTimeInIRIran).HasComputedColumnSql("(SWITCHOFFSET([MyDateTime], '+03:30'))", false);
entity.Property(e => e.TheDateTimeInIRIran).HasComputedColumnSql("(FORMAT(SWITCHOFFSET([MyDateTime], '+03:30'), 'yyyy/MM/dd HH:mm:ss', 'fa-ir'))", false);