sql >> Databáze >  >> RDS >> Sqlserver

Převeďte řetězec na hodnotu datetime v LINQ

Pravděpodobně stojí za to provést analýzu lokálně místo v databázi pomocí 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));

Počáteční výběr má zajistit, že bude načten pouze relevantní sloupec, nikoli celá entita (pouze pro většinu z nich, která se má zahodit). Také jsem se vyhnul použití anonymního typu, protože se zdá, že to nemá smysl.

Všimněte si, jak jsem mimochodem specifikoval invariantní kulturu – vy téměř jistě neděláte chtějí jen využít současnou kulturu. A změnil jsem vzor používaný pro analýzu, protože to zní jako váš zdroj data jsou v yyyyMMdd formát.

Samozřejmě, pokud je to možné, měli byste změnit schéma databáze tak, aby se hodnoty data ukládaly do sloupce založeného na datu, nikoli jako text.



  1. index dataframe.to_sql jako primární klíč v postgresql

  2. Jak porovnat datum a čas pouze s datem na serveru SQL Server

  3. postgresql ekvivalentní $mysqli->insert_id

  4. CHYBA vložit do funkce ON duplicatekey UPDATE