Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Konwertuj ciąg na wartość daty i godziny w LINQ

Prawdopodobnie warto po prostu przeprowadzić parsowanie lokalnie zamiast w bazie danych, za 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));

Początkowy wybór ma na celu zapewnienie, że zostanie pobrana tylko odpowiednia kolumna, a nie cała jednostka (tylko po to, aby większość z nich została odrzucona). Unikałem również używania typu anonimowego, ponieważ wydaje się, że nie ma to tutaj sensu.

Przy okazji, zwróć uwagę, jak określiłem kulturę niezmienną — prawie na pewno nie chcą po prostu korzystać z obecnej kultury. Zmieniłem też wzorzec używany do analizowania, ponieważ brzmi jak Twoje źródło dane są w formacie yyyyMMdd format.

Oczywiście, jeśli to w ogóle możliwe, powinieneś zmienić schemat bazy danych, aby przechowywać wartości dat w kolumnie opartej na dacie, a nie jako tekst.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmień typ danych kolumny na unikalny identyfikator z bigint

  2. Odwróć/Zdmuchnij GROUP BY

  3. Ogranicz połączenie SQL Server do określonego adresu IP

  4. Dynamiczne tworzenie tabeli w tsql

  5. Liczba zmiennych obiektów SSIS?