将SQL日期转换为dd-mmmm-yyyy C#

时间:2019-02-09 21:13:17

标签: c# sql entity-framework linq date

我在SQL表中有一个date字段,如果我尝试保存,则将它保存到我身上,无论是09-02-2019还是09-february-2019,但是尝试恢复该日期都显示出一些内容像这样(全部在一起或与T在一起):

2019-02-09 00:00:00:000

我正在尝试使用EF和LINQ恢复这些值,以便能够格式化日期,我尝试实现这一点:

我的班级中的日期属性

[Column(TypeName = "date")]
public DateTime? fechaInicio { get; set; }

[Column(TypeName = "date")]
public DateTime? fechaExpo { get; set; }

[Column(TypeName = "date")]
public DateTime? fechaEntrega { get; set; }

获取数据列表

//TRAER LISTA DE ORDENES
  public List<mapOrdenesListaTemp> listadoOrdenes()
  {
     var lista = new List<mapOrdenesListaTemp>();

      using(var ctx=new ModelContext())
      {
         lista = ctx.Ordenes.Select(m => new mapOrdenesListaTemp
                                    {
fechaInicio=Convert.ToDateTime(m.fechaInicio).ToString("dd-mmmm-yyyy",CultureInfo.InvariantCulture),
fechaExportacion= Convert.ToDateTime(m.fechaExpo).ToString("dd-mmmm-yyyy", CultureInfo.InvariantCulture),
fechaEntrega= Convert.ToDateTime(m.fechaEntrega).ToString("dd-mmmm-yyyy", CultureInfo.InvariantCulture)

                                     }).ToList();  

      }

我试图在此处分配数据(CLASS mapOrdenesListaTemp)

public class mapOrdenesListaTemp
{
    public string fechaInicio { get; set; }
    public string fechaEntrega { get; set; }
    public string fechaExportacion { get; set; }
}

但是我得到这个错误:

  

System.NotSupportedException:'LINQ to Entities无法识别   方法'System.String ToString(System.String,System.IFormatProvider)'   方法,并且该方法无法转换为商店表达式。'

我知道我不能使用.ToString (),因为错误告诉我,但是如何恢复数据然后应用转换(我想将日期从2019-02-09传递到{ {1}}?无论如何要解决此错误,我不知道我的代码是否正确?)

2 个答案:

答案 0 :(得分:1)

错误消息很清楚。您无法在EF查询中设置日期格式,因为它无法转换为等效的sql。

或者,您可以执行以下操作:

lista = ctx.Ordenes.Select(m => new { m.fechaInicio, m.fechaExpo, m.fechaEntrega}).ToList();

var listWithFormattedDate = lista.Select(m => new mapOrdenesListaTemp
                            {
                               fechaInicio = m.fechaInicio?.ToString("dd-MMMM-yyyy",CultureInfo.InvariantCulture),
                               fechaExportacion= m.fechaExpo?.ToString("dd-MMMM-yyyy",CultureInfo.InvariantCulture),
                               fechaEntrega= m.fechaEntrega?.ToString("dd-MMMM-yyyy", CultureInfo.InvariantCulture)
                             }).ToList();

答案 1 :(得分:0)

使用时 1. DateTime数据类型,则该值将按以下示例存储 1998-01-02 10:10:50.600 2.日期数据类型,则将值存储为以下示例 1998-01-02 00:00:00.000 -时间字段将始终存在,但仍为00:00:00.000

在这种情况下,我的建议是将日期数据类型转换为字符串,同时在数据库中保存和从数据库中检索值