sql >> Database >  >> RDS >> Sqlserver

Linq:Sorteer op datum waarop het is opgeslagen als tekst

U kunt een berekende kolom aan de tabel toevoegen die die strings omzet naar datums waarop uw discriminator een specifieke waarde heeft (hier heb ik zojuist 'date' gebruikt ).

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

Als je tijdinformatie hebt, dan date moet datetime zijn in de CONVERT() functie.

Ook de 101 is een stijlcode die een verwacht formaat van MM/dd/yyyy . aangeeft . Als je iets anders hebt, raadpleeg dan dit:http://msdn.microsoft .com/en-us/library/ms187928.aspx , maar houd er rekening mee dat als u een stijl onder 100 gebruikt, uw uitdrukking als niet-deterministisch wordt beschouwd en dat u uw berekende kolom niet PERSISTED kunt maken , dus de conversies worden direct bij elke zoekopdracht uitgevoerd (dat wil je niet).

De berekende kolom zal zichzelf bijwerken wanneer de rijwaarden veranderen; anders blijven de waarden behouden en kunnen ze worden opgevraagd, net als in elke andere kolom. Geen triggers vereist.



  1. PHP Controleer MySQL Laatste rij

  2. Hoe zijn de SQL-commando's geclassificeerd | UBIQ

  3. Symfony2 retourneert lege JSON bij AJAX-aanroep terwijl variabele niet leeg is

  4. Query geretourneerd als Booleaans?