我应该与SqlFunctions.DateName一起使用什么参数来获取类似于“ MM”的月份?

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

Evk*_*Evk 5

您可以这样做:

.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的,可以与其他提供程序一起使用。