sql >> Databasteknik >  >> RDS >> Sqlserver

Konvertera sträng till datetime-värde i LINQ

Det är förmodligen värt att bara göra analysen lokalt istället för i databasen, 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));

Det initiala valet är att säkerställa att endast den relevanta kolumnen hämtas, snarare än hela enheten (endast för det mesta som ska kasseras). Jag har också undvikit att använda en anonym typ eftersom det inte verkar vara någon mening med det här.

Lägg märke till hur jag har specificerat den invarianta kulturen förresten - det gör du nästan säkert inte vill bara använda den nuvarande kulturen. Och jag har ändrat mönstret som används för att analysera, eftersom det låter som din källa data finns i yyyyMMdd format.

Naturligtvis, om det alls är möjligt bör du ändra databasschemat för att lagra datumvärden i en datumbaserad kolumn, snarare än som text.



  1. Portering av Oracle-proceduren till PostgreSQL

  2. Erlang och PostgreSQL

  3. stratifierat urval på intervall

  4. 4 sätt att kontrollera om en tabell finns i MariaDB