簡體   English   中英

C#中的DateTime轉換問題

[英]DateTime conversion problems in C#

我有以下SQL代碼段:

WHERE YEAR(wo.audt_created_dttm) >= 2011 - 3 --narrows down to a year
AND YEAR(wo.audt_created_dttm) >= 2006 -- bad data less than 2006
AND wo.audt_created_dttm < DATEADD(mm, 1, CAST(CAST(1 * 3 as varchar) + '/01/' +  CAST(2011 as varchar) as DateTime))

我將其翻譯成LINQ to SQL(用於LINQPad中的測試目的),如下所示:

int year = 2012, quarter = 1;
DateTime timeframe = new DateTime(year, (quarter * 3), 01).AddMonths(1); 


where wo.Audt_created_dttm.Value.Year >= year - 3 && wo.Audt_created_dttm.Value.Year >= 2006
    && wo.Audt_created_dttm < timeframe && (s.Id =="NM" || s.Id == "TH") && 
    (wo.Clsdt_date ?? new DateTime(3000, 01, 01)) < DateTime.Now

但是,對於實際的解決方案,我不想具體定義年份或季度。 我希望年份和季度是當前的。

在這一年中,我嘗試這樣做:

DateTime timeframe = new DateTime(timeframe.Year, (quarter * 3), 01).AddMonths(1);

但是編譯器一點都不喜歡。 然后我嘗試了這個:

DateTime setYear = new DateTime();
DateTime timeframe = new DateTime(setYear.Year, (quarter * 3), 01).AddMonths(1)

那也不起作用。 我對年度或季度的操作一無所知,並希望獲得任何建議

我希望年份和季度是當前的。

要獲取當前季度的第一天,您可以使用以下代碼:

var now = DateTime.Now;
var quarter = (now.Month - 1)/3;
var timeframe = new DateTime(now.Year, 3*quarter + 1, 1);

timeframe將包含2012-04-01、2012-07-01、2012-10-01等,具體取決於當前日期。

您要今年嗎?

  DateTime.Today.Year

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM