我应该对 SqlFunctions.DateName 使用什么参数来获得像 "MM" 这样的月份?

What argument should I use with SqlFunctions.DateName to get the month like "MM"?

是否可以使用 SqlFunctions.DateName(或任何其他 SqlFunctions 方法)获得两位数的月份?例如:八月 --> "08"

这些我都试过了:

  test1 = SqlFunctions.DateName("MM", e.Date),
  test2 = SqlFunctions.DateName("m", e.Date),
  test3 = SqlFunctions.DateName("mm", e.Date),

但他们都return"August"

还有SqlFunctions.DatePart但是return是一个整数,例如:SqlFunctions("mm", e.Date)return是整数8

你可以这样做:

.Select(c => DbFunctions.Right("00" + c.Date.Month, 2))

RIGHT(SQL 函数)returns x 给定字符串中最右边的字符(在本例中为 2),我们在月份前面加上 2 个零,这样如果月份有 1 位数字,结果为“00x”,因此返回“0x”,当月份有 2 位时 - 结果为“00xx”,返回 "xx"。

生成的 sql 查询将只是:

RIGHT(N'00' + CASE WHEN (DATEPART (month, [Extent1].[Date]) IS NULL) 
    THEN N'' ELSE  CAST( DATEPART (month, [Extent1].[Date])

作为奖励,此代码不是 sql 服务器特定的,可以与其他提供商一起使用。