我有一個SQL查詢,它檢查今天要檢查的表中存盤如下 3 個字母字符的欄位

如果今天是星期二,我需要回傳記錄。我有這樣的 SQL 查詢
SELECT TOP 1 [EndTime],[StartTime],[OrderDay]
FROM[dbo].[Settings]
where SUBSTRING(DATENAME(weekday, getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'), 0, 4) = OrderDay
由于該表在 Azure SQL 中,并且我的應用程式在東部時區運行,我SUBSTRING(DATENAME(weekday, getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'), 0, 4)現在正在使用 EF 核心,因此我想將上述查詢更改為如下所示的 LINQ 查詢
settings_data = from s in _context.Settings
where SUBSTRING(DATENAME(weekday, getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'), 0, 4) = s.OrderDay
select s;
它說SUBSTRING()在當前背景關系中不存在。任何幫助是極大的贊賞
uj5u.com熱心網友回復:
您不能在 LinQ 中這樣做,因為您不能在 select 或 where 中使用集成功能。
您必須執行以下操作:
string myCondition = DateTime.UtcNow.DayOfWeek.ToString().Substring(0,3);
settings_data = from s in _context.Settings
where s.OrderDay = myCondition
select s;
您可以將 DateTime.Now 或 DateTime.UtcNow 用于 UTC 實時。DayOfWeek將為您提供當天的名稱,然后為Substring:0 是開始,3 是長度。
更新:
為了讓Eastern Standard Time你可以使用:
var timeUtc = DateTime.UtcNow;
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);
進而:
string myCondition = easternTime.DayOfWeek.ToString().Substring(0,3);
測驗一下:https : //dotnetfiddle.net/YFwnZo
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/360041.html
標籤:sql sql-server 林克 选择 azure-sql-数据库
