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

Linq:Seřadit podle data, když je uložen jako text

Do tabulky můžete přidat vypočítaný sloupec, který převede tyto řetězce na data, když má váš diskriminátor konkrétní hodnotu (zde jsem právě použil 'date' ).

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

Pokud máte informace o čase, pak date by měl být datetime v CONVERT() funkce.

Také 101 je kód stylu označující očekávaný formát MM/dd/yyyy . Pokud máte něco jiného, ​​podívejte se na toto:http://msdn.microsoft .com/en-us/library/ms187928.aspx , ale mějte na paměti, že pokud použijete styl nižší než 100, váš výraz bude považován za nedeterministický a vypočítaný sloupec nemůžete nastavit na PERSISTED , takže konverze se budou provádět za běhu s každým dotazem (to nechcete).

Vypočítaný sloupec se sám aktualizuje, když se změní hodnoty řádku; jinak jsou hodnoty trvalé a dotazovatelné stejně jako v jakémkoli jiném sloupci. Nejsou vyžadovány žádné spouštěče.



  1. MySQL rodič -> podřízený dotaz

  2. aktualizovat pomocí prohlášení o připojení mysql?

  3. SQL Server:Jak volat uživatelem definovanou funkci (UDF) na propojeném serveru?

  4. Preferovaný způsob ukládání hesel v databázi