我已經返回了我一個月的第一天的SQL語句:LINQ到SQL - 開始月份
DATEADD(month, DATEDIFF(month, 0, @input), 0)
我將如何重新使用SQLFunctions.DateAdd和SQLFunctions.DateDiff這個電話?
在此先感謝
我已經返回了我一個月的第一天的SQL語句:LINQ到SQL - 開始月份
DATEADD(month, DATEDIFF(month, 0, @input), 0)
我將如何重新使用SQLFunctions.DateAdd和SQLFunctions.DateDiff這個電話?
在此先感謝
如果你真的使用LINQ到SQL:
var zero = new DateTime(2000, 1, 1);
var resxxxx = (from p in ctx.Addresses
select new {
month = zero.AddMonths(SqlMethods.DateDiffMonth(zero, p.Date))
}
).FirstOrDefault();
的重要組成部分,是month = zero.AddMonths(SqlMethods.DateDiffMonth(zero, p.Date))
。
請注意,我已使用zero = new DateTime(2000, 1, 1);
,但本月的任何一天都可以(1980年1月1日,1983年1月1日,2100年1月12日...)。這是您的SQL命令中的兩個0
。 p.Date
是您要計算月份的第一天的日期(所以@input
)。
感謝您的答案 - 我實際上使用實體框架(因此SqlMethods是不允許的)。但我設法從你的答案中找出解決方案: var zero = new DateTime(2000,1,1); month = SqlFunctions.DateAdd(「month」,SqlFunctions.DateDiff(「month」,zero,p),zero); – Stuart
使用[SQLFunctions](http://msdn.microsoft.com/en-us/library/system.data.objects.sqlclient.sqlfunctions.aspx),你不會走得太遠,考慮到'提供通用語言運行時(CLR)方法調用數據庫中的函數在** LINQ to Entities查詢**。 – xanatos