Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Converter string em valor de data e hora no LINQ


Provavelmente vale a pena fazer a análise localmente em vez de no banco de dados, via 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));

A seleção inicial é para garantir que apenas a coluna relevante seja buscada, em vez de toda a entidade (apenas para que a maior parte seja descartada). Também evitei usar um tipo anônimo, pois parece não haver sentido aqui.

Observe como eu especifiquei a cultura invariável a propósito - você quase certamente não quer apenas usar a cultura atual. E eu mudei o padrão usado para análise, pois soa como sua fonte os dados estão em yyyyMMdd formato.

Obviamente, se possível, você deve alterar o esquema do banco de dados para armazenar valores de data em uma coluna baseada em data, em vez de como texto.