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

Linq:Сортиране по дата, когато се съхранява като текст

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

ALTER TABLE Foo
ADD trueDate AS
    CASE 
        WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
        ELSE NULL
    END
PERSISTED

Ако имате информация за часа, тогава date трябва да бъде datetime в CONVERT() функция.

Освен това 101 е стилов код, указващ очакван формат MM/dd/yyyy . Ако имате нещо различно, вижте това:http://msdn.microsoft .com/en-us/library/ms187928.aspx , но имайте предвид, че ако използвате стил под 100, вашият израз ще се счита за недетерминистичен и не можете да направите вашата изчислена колона PERSISTED , така че реализациите ще се извършват в движение с всяка заявка (не искате това).

Изчислената колона ще се актуализира, когато стойностите на реда се променят; в противен случай стойностите се запазват и могат да се правят заявки точно както във всяка друга колона. Не са необходими задействания.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Влезлите потребители се отписват след известно време

  2. Планирайте SQL задание всеки ден в конфигурирани от потребителя времеви интервали

  3. Точност на типа данни SYSDATETIME в SQL Server

  4. Пребройте редовете на час в SQL Server с пълна стойност за дата и час като резултат

  5. Използвайте един CTE много пъти