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

Linq:Sortuj według daty, gdy jest przechowywany jako tekst

Możesz dodać do tabeli kolumnę obliczoną, która przekonwertuje te ciągi na daty, gdy dyskryminator ma określoną wartość (tutaj właśnie użyłem 'date' ).

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

Jeśli masz informacje o czasie, to date powinno być datetime w CONVERT() funkcja.

Również 101 to kod stylu wskazujący oczekiwany format MM/dd/yyyy . Jeśli masz coś innego, zapoznaj się z tym:http://msdn.microsoft .com/en-us/library/ms187928.aspx , ale pamiętaj, że jeśli użyjesz stylu poniżej 100, Twoje wyrażenie zostanie uznane za niedeterministyczne i nie możesz ustawić kolumny obliczonej PERSISTED , więc konwersje będą wykonywane na bieżąco z każdym zapytaniem (nie chcesz).

Obliczona kolumna zaktualizuje się, gdy zmienią się wartości wierszy; w przeciwnym razie wartości są utrwalane i podlegają zapytaniom, tak jak w każdej innej kolumnie. Nie są wymagane żadne wyzwalacze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak skryptować procedury składowane do plików?

  2. Jak obliczyć procent za pomocą instrukcji SQL

  3. Błąd konwersji podczas konwersji „nvarchar” na „datetime” w serwerze sql

  4. Jak przesyłać strumieniowo dane z/do pól BLOB programu SQL Server?

  5. Wstawianie listy<> do tabeli SQL Server