sql >> Base de Datos >  >> RDS >> Sqlserver

Convertir cadena a valor de fecha y hora en LINQ

Probablemente valga la pena hacer el análisis localmente en lugar de en la base de datos, a través de AsEnumerable :

var query = db.tb1.Select(tb => tb.dt)
                  .AsEnumerable() // Do the rest of the processing locally
                  .Select(x => DateTime.ParseExact(x, "yyyyMMdd",
                                                CultureInfo.InvariantCulture));

La selección inicial es para garantizar que solo se obtenga la columna relevante, en lugar de la entidad completa (solo para descartar la mayor parte). También evité usar un tipo anónimo ya que parece no tener sentido aquí.

Tenga en cuenta que, por cierto, he especificado la cultura invariable:es casi seguro que no solo quiero usar la cultura actual. Y he cambiado el patrón utilizado para el análisis, ya que suena como su fuente los datos están en yyyyMMdd formato.

Por supuesto, si es posible, debe cambiar el esquema de la base de datos para almacenar valores de fecha en una columna basada en fechas, en lugar de como texto.