sql >> Database teknologi >  >> RDS >> Sqlserver

Skift standard datoformat gemt i en database

Det er kernen i forvirringen. Bare fordi SQL Server Management Studio vises en datetime-kolonne i det format betyder ikke, at den er gemt SOM TEKST ÅÅÅÅ-MM-DD tt:mm:ss.zzz. Det er gemt som binært, noget som 0000101000001010..

Dine datoer er gemt i SQL Server som en serie af bytes (bits), der udgør en eller anden numerisk værdi, der er en offset fra 1900-01-01. Der er ikke noget iboende format på datoerne. Det du henviser til er, at SSMS som standard viser [display] datetime-kolonner som ÅÅÅÅ-MM-DD tt:mm:ss.zzz. Hvis du bruger et front-end programmeringsværktøj, kan det også pålægge et standard [display] format, medmindre du har bedt om et andet.

Der er absolut INGEN måde at få SSMS til at vise datetime-data i et andet format gennem muligheder eller konfiguration. Hvis du skal, skal du opdatere SQL-forespørgslen for at konvertere datetime-kolonnen til en VARCHAR-kolonne, der indeholder den TEXTuelle ækvivalent i et bestemt format. Det kan være nyttigt i SSMS, men ville være dårligt, når det bruges som datakilde til front-end GUI/webapps - da værdierne ikke er datetime og ikke kan bruges til intervalberegning, grafer, bundet til datokontroller osv.

Se dette eksempel på visning af tid (getdate()) som ÅÅÅÅ-DD-MM, et meget usædvanligt format. Bemærk, at datofeltet/variablen skal bruges to gange:

select stuff(convert(char(7), getdate(), 120), 5, 0, '-' + convert(char(2), getdate(), 3))


  1. Sådan ændres PHP/Jquery/Ajax script til at have mere end ét formularfelt postst

  2. Hvordan gemmer man genererede PDF-filer til MySQL-database ved hjælp af Java?

  3. Tilsvarende funktion for DATEADD() i Oracle

  4. Lås for SELECT, så en anden proces ikke får gamle data