spo*_*rts 1 c# linq-to-entities
是否可以SqlFunctions.DateName(或其他任何SqlFunctions方法)以两位数表示月份?例如:八月->“ 08”
我尝试了所有这些:
test1 = SqlFunctions.DateName("MM", e.Date),
test2 = SqlFunctions.DateName("m", e.Date),
test3 = SqlFunctions.DateName("mm", e.Date),
Run Code Online (Sandbox Code Playgroud)
但他们都返回“八月”
还有SqlFunctions.DatePart,但它返回一个整数,例如:SqlFunctions("mm", e.Date)返回整数8
您可以这样做:
.Select(c => DbFunctions.Right("00" + c.Date.Month, 2))
Run Code Online (Sandbox Code Playgroud)
RIGHT (SQL函数)从给定的字符串中返回x个最右边的字符(在这种情况下为2个),并且我们在month前面加上2个零,以便如果month具有1位数字,结果为“ 00x”,因此返回“ 0x”,并且当month具有2位数字时-结果为“ 00xx”并返回“ xx”。
产生的sql查询将只是:
RIGHT(N'00' + CASE WHEN (DATEPART (month, [Extent1].[Date]) IS NULL)
THEN N'' ELSE CAST( DATEPART (month, [Extent1].[Date])
Run Code Online (Sandbox Code Playgroud)
另外,此代码不是特定于sql-server的,可以与其他提供程序一起使用。