Bagikan melalui


GETDATE (Transact-SQL)

Berlaku untuk: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Mengembalikan tanda waktu sistem database saat ini sebagai nilai tanggalwaktu tanpa offset zona waktu database. Nilai ini berasal dari sistem operasi komputer tempat instans SQL Server berjalan.

Catatan

SYSDATETIME dan SYSUTCDATETIME memiliki presisi detik pecahan lebih dari GETDATE dan GETUTCDATE. SYSDATETIMEOFFSET mencakup offset zona waktu sistem. SYSDATETIME, SYSUTCDATETIME, dan SYSDATETIMEOFFSET dapat ditetapkan ke variabel dari salah satu jenis tanggal dan waktu.

Azure SQL Database (dengan pengecualian Azure SQL Managed Instance) dan Azure Synapse Analytics mengikuti UTC. Gunakan ZONA WAKTU di Azure SQL Database atau Azure Synapse Analytics jika Anda perlu menginterpretasikan informasi tanggal dan waktu di zona waktu non-UTC.

Untuk gambaran umum semua jenis dan fungsi data tanggal dan waktu Transact-SQL, lihat Jenis dan Fungsi Data Tanggal dan Waktu (Transact-SQL).

Konvensi sintaks transact-SQL

Sintaks

GETDATE()

Jenis Hasil

datetime

Keterangan

Pernyataan T-SQL dapat merujuk ke GETDATE di mana saja mereka dapat merujuk ke ekspresi tanggalwaktu .

GETDATE adalah fungsi nondeterministik. Tampilan dan ekspresi yang mereferensikan fungsi ini dalam kolom tidak dapat diindeks.

Menggunakan SWITCHOFFSET dengan fungsi GETDATE() dapat menyebabkan kueri berjalan lambat karena pengoptimal kueri tidak dapat memperoleh perkiraan kardinalitas yang akurat untuk nilai GETDATE. Kami menyarankan agar Anda melakukan prakompres nilai GETDATE lalu menentukan nilai tersebut dalam kueri seperti yang diperlihatkan dalam contoh berikut. Selain itu, gunakan petunjuk kueri OPTION (RECOMPILE) untuk memaksa pengoptimal kueri menyusun ulang rencana kueri saat kueri yang sama dijalankan. Pengoptimal kemudian akan memiliki perkiraan kardinalitas yang akurat untuk GETDATE() dan akan menghasilkan rencana kueri yang lebih efisien.

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

Contoh

Contoh berikut menggunakan enam fungsi sistem SQL Server yang mengembalikan tanggal dan waktu saat ini untuk mengembalikan tanggal, waktu, atau keduanya. Nilai dikembalikan dalam seri; oleh karena itu, detik pecahan mereka mungkin berbeda.

J. Mendapatkan tanggal dan waktu sistem saat ini

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

Berikut adalah tataan hasil.

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. Mendapatkan tanggal sistem saat ini

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

Berikut adalah hasil yang ditetapkan.

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. Mendapatkan waktu sistem saat ini

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

Berikut adalah hasil yang ditetapkan.

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

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

Contoh berikut menggunakan tiga fungsi sistem SQL Server yang mengembalikan tanggal dan waktu saat ini untuk mengembalikan tanggal, waktu, atau keduanya. Nilai dikembalikan dalam seri; oleh karena itu, detik pecahan mereka mungkin berbeda.

D. Mendapatkan tanggal dan waktu sistem saat ini

SELECT SYSDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE();

E. Mendapatkan tanggal sistem saat ini

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

F. Mendapatkan waktu sistem saat ini

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

Lihat juga

CAST dan CONVERT (Transact-SQL)