sql >> Databasteknik >  >> RDS >> Database

Hur man får aktuellt datum och tid (utan tidszon) i T-SQL

Problem:

Du vill ha aktuellt datum och tid i T-SQL, men du vill inte att tidszonen förskjuts.

Lösning:

Vi använder GETDATE(), CURRENT_TIMESTAMP och SYSDATETIME() för att få aktuellt datum och tid utan tidszonförskjutning. De två första funktionerna gör att vi kan få aktuell tid med lägre precision. (GETDATE() är en T-SQL-funktion, medan CURRENT_TIMESTAMP är en SQL Standard-funktion; båda funktionerna returnerar samma datatyp). Den tredje funktionen, SYSDATETIME(), får en tid med högre precision.

SELECT CURRENT_TIMESTAMP ;

Här är resultatet av frågan:

2019-08-14 10:01:06.983

Diskussion:

I en SQL Server-databas, CURRENT_TIMESTAMP funktion returnerar det aktuella datumet och tiden (dvs tiden på maskinen där den SQL Server-instansen körs) som en datetime data typ. Datetime är en tid med lägre precision som har högst tre bråkdelar. (I vårt exempel är detta 983.)

GETDATE() liknar CURRENT_TIMESTAMP och ger samma resultat. Skillnaden är att CURRENT_TIMESTAMP är SQL-standard, medan GETDATE() är specifik för SQL Server.

SELECT GETDATE() ;

Naturligtvis, om du vill få ett aktuellt datum och tid med högre precision utan tidszonförskjutning, kan du använda SYSDATETIME()-funktionen. Denna funktion returnerar en datetime2 datatyp med sju bråkdelar. Titta på exemplet nedan:

SELECT SYSDATETIME() ;

Här är resultatet:

2019-08-14 10:01:06.9754163

  1. Oracle:hur får man procent av totalt genom en fråga?

  2. Återställ identitetsfrö efter borttagning av poster i SQL Server

  3. MySQL heltalsfält returneras som sträng i PHP

  4. Standardsträngar för numeriskt format som stöds av FORMAT() i SQL Server