Aracılığıyla paylaş


GETDATE (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Veritabanı zaman kuşağı ofseti olmadan mevcut veritabanı sistemi zaman damgasını tarih-saat değeri olarak döndürür. Bu değer, SQL Server örneğinin çalıştığı bilgisayarın işletim sisteminden türetilir.

Uyarı

SYSDATETIME ve SYSUTCDATETIME, GETDATE ve GETUTCDATE'den daha fazla kesirlik saniye hassasiyetine sahiptir. SYSDATETIMEOFFSET, sistem saat bölgesi ofsetini içerir. SYSDATETIME, SYSUTCDATETIME ve SYSDATETIMEOFFSET, tarih ve zaman tiplerinden herhangi birine atanabilir.

Azure SQL Database (Azure SQL Managed Instance hariç) ve Azure Synapse Analytics UTC'yi takip eder. UTC olmayan bir saat diliminde tarih ve saat bilgisini yorumlamanız gerekiyorsa Azure SQL Veritabanı'nda AT TIME ZONE veya Azure Synapse Analytics kullanın.

Tüm Transact-SQL tarih ve saat veri türlerine ve işlevlerine genel bakış için bkz. Tarih ve Saat Veri Türleri ve İşlevleri (Transact-SQL).

Transact-SQL söz dizimi kuralları

Sözdizimi

GETDATE()

Dönüş Türü

datetime

Açıklamalar

Transact-SQL ifadeler, tarih ifadesine referans verebilecekleri her yerde GETDATE'e atıfta bulunabilir.

GETDATE, belirgin olmayan bir fonksiyondur. Bu fonksiyona bir sütunda referans veren görünümler ve ifadeler indekslenemez.

GETDATE() fonksiyonuyla SWITCHOFFSET kullanmak, sorgu optimizatorunun GETDATE değeri için doğru kardinalite tahminlerini elde edememesi nedeniyle sorgu yavaş çalışmasına neden olabilir. GETDATE değerini önceden hesaplamanızı ve ardından bu değeri aşağıdaki örnekte gösterildiği gibi sorguda belirtmenizi öneririz. Ayrıca, aynı sorgu bir sonraki yürütüldüğünde sorgu optimizatorunu bir sorgu planını yeniden derlemeye zorlamak için OPTION (RECOMPILE) sorgu ipucunu kullanın. Optimizer daha sonra GETDATE() için doğru kardinalite tahminlerine sahip olur ve daha verimli bir sorgu planı oluşturur.

DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00');
SELECT * FROM t
WHERE c1 > @dt OPTION (RECOMPILE);

Örnekler

Aşağıdaki örneklerde, tarih, saat veya her ikisini birden döndürmek için geçerli tarih ve saati döndüren altı SQL Server sistem işlevi kullanılır. Değerler seri olarak döndürülür; Bu nedenle, kesirli saniyeleri farklı olabilir.

A. Mevcut sistem tarih ve saatini almak

SELECT SYSDATETIME()
    ,SYSDATETIMEOFFSET()
    ,SYSUTCDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE()
    ,GETUTCDATE();

Sonuç kümesi aşağıdadır.

SYSDATETIME()      2007-04-30 13:10:02.0474381
SYSDATETIMEOFFSET()2007-04-30 13:10:02.0474381 -07:00
SYSUTCDATETIME()   2007-04-30 20:10:02.0474381
CURRENT_TIMESTAMP  2007-04-30 13:10:02.047
GETDATE()          2007-04-30 13:10:02.047
GETUTCDATE()       2007-04-30 20:10:02.047

B. Mevcut sistem tarihini almak

SELECT CONVERT (date, SYSDATETIME())
    ,CONVERT (date, SYSDATETIMEOFFSET())
    ,CONVERT (date, SYSUTCDATETIME())
    ,CONVERT (date, CURRENT_TIMESTAMP)
    ,CONVERT (date, GETDATE())
    ,CONVERT (date, GETUTCDATE());

Sonuç kümesi aşağıdadır.

SYSDATETIME()          2007-05-03
SYSDATETIMEOFFSET()    2007-05-03
SYSUTCDATETIME()       2007-05-04
CURRENT_TIMESTAMP      2007-05-03
GETDATE()              2007-05-03
GETUTCDATE()           2007-05-04

C. Mevcut sistem zamanını almak

SELECT CONVERT (time, SYSDATETIME())
    ,CONVERT (time, SYSDATETIMEOFFSET())
    ,CONVERT (time, SYSUTCDATETIME())
    ,CONVERT (time, CURRENT_TIMESTAMP)
    ,CONVERT (time, GETDATE())
    ,CONVERT (time, GETUTCDATE());

Sonuç kümesi aşağıdadır.

SYSDATETIME()       13:18:45.3490361
SYSDATETIMEOFFSET() 13:18:45.3490361
SYSUTCDATETIME()    20:18:45.3490361
CURRENT_TIMESTAMP   13:18:45.3470000
GETDATE()           13:18:45.3470000
GETUTCDATE()        20:18:45.3470000

Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

Aşağıdaki örnekler, tarih, saat veya her ikisini döndürmek için güncel tarih ve saati döndüren üç SQL Server sistem fonksiyonunu kullanır. Değerler seri olarak döndürülür; Bu nedenle, kesirli saniyeleri farklı olabilir.

D. Mevcut sistem tarih ve saatini almak

SELECT SYSDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE();

E. Mevcut sistem tarihini almak

SELECT CONVERT (date, SYSDATETIME())
    ,CONVERT (date, CURRENT_TIMESTAMP)
    ,CONVERT (date, GETDATE());

F. Mevcut sistem zamanını almak

SELECT CONVERT (time, SYSDATETIME())
    ,CONVERT (time, CURRENT_TIMESTAMP)
    ,CONVERT (time, GETDATE());

Ayrıca Bkz.

CAST ve CONVERT (Transact-SQL)