首页 > 解决方案 > 将 SQL 日期转换为 dd-mmmm-yyyy C#

问题描述

date在 SQL 表中有一个字段,如果我尝试保存,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();  

      }

我尝试在此处分配数据(类 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-09to 传递到09-February-2019?无论如何要解决这个错误,我不知道我的代码正确吗?)

标签: c#sqlentity-frameworklinqdate

解决方案


当您使用 1. DateTime 数据类型时,该值将存储为如下示例 1998-01-02 10:10:50.600 2. Date 数据类型,则该值将存储为如下示例 1998-01-02 00:00: 00.000 - 时间字段将始终存在,但将是 00:00:00.000

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


推荐阅读