Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Преобразувайте низ в стойност за дата и час в LINQ

Вероятно си струва просто да направите анализирането локално, вместо в базата данни, чрез 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));

Първоначалният избор е да се гарантира, че се извлича само съответната колона, а не целият обект (само за по-голямата част от него да бъде отхвърлен). Също така избягвах да използвам анонимен тип, тъй като изглежда няма смисъл от него тук.

Забележете как между другото посочих инвариантната култура - почти сигурно не искат просто да използват текущата култура. И промених модела, използван за анализиране, тъй като звучи като вашия източник данните са в yyyyMMdd формат.

Разбира се, ако изобщо е възможно, трябва да промените схемата на базата данни, за да съхранявате стойностите на датата в колона, базирана на дата, а не като текст.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Запитване на SQL сървър за получаване на списъка с колони в таблица заедно с ограниченията типове данни, NOT NULL и PRIMARY KEY

  2. Проблем с промяна на сортирането на база данни (SQL Server 2008)

  3. Откриване на последователни диапазони от дати с помощта на SQL

  4. Как да създадете уникално ограничение за колона за вече съществуваща таблица - SQL Server / TSQL урок, част 97

  5. Свързване към SQL Server от Linux чрез JDBC с помощта на IntegratedSecurity (удостоверяване на Windows)?