ISDATE (Transact-SQL)

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

Mengembalikan 1 jika ekspresi adalah nilai tanggalwaktu yang valid; jika tidak, 0.

ISDATE mengembalikan 0 jika ekspresi adalah nilai datetime2 .

Untuk gambaran umum semua jenis dan fungsi data tanggal dan waktu Transact-SQL, lihat Jenis dan Fungsi Data Tanggal dan Waktu (Transact-SQL). Perhatikan bahwa rentang untuk data tanggalwaktu adalah 1753-01-01 hingga 9999-12-31, sedangkan rentang untuk data tanggal adalah 0001-01-01 hingga 9999-12-31.

Konvensi sintaks transact-SQL

Sintaksis

ISDATE ( expression )

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

expression
Adalah string karakter atau ekspresi yang dapat dikonversi ke string karakter. Ekspresi harus kurang dari 4.000 karakter. Jenis data tanggal dan waktu, kecuali tanggalwaktu dan smalldatetime, tidak diizinkan sebagai argumen untuk ISDATE.

Jenis Hasil

int

Keterangan

ISDATE bersifat deterministik hanya jika Anda menggunakannya dengan fungsi CONVERT, jika parameter gaya CONVERT ditentukan, dan gaya tidak sama dengan 0, 100, 9, atau 109.

Nilai pengembalian ISDATE bergantung pada pengaturan yang diatur oleh SET DATEFORMAT, ATUR BAHASA dan Konfigurasikan Opsi Konfigurasi Server bahasa default.

Format ekspresi ISDATE

Untuk contoh format valid yang akan dikembalikan ISDATE 1, lihat bagian "Format Literal String yang Didukung untuk tanggalwaktu" dalam topik tanggalwaktu dan smalldatetime . Untuk contoh tambahan, lihat juga kolom Input/Output dari bagian "Argumen" dari CAST dan CONVERT.

Tabel berikut ini meringkas format ekspresi input yang tidak valid dan yang mengembalikan 0 atau kesalahan.

Ekspresi ISDATE Nilai pengembalian ISDATE
NULL 0
Nilai tipe data yang tercantum dalam Jenis Data dalam kategori jenis data apa pun selain string karakter, string karakter Unicode, atau tanggal dan waktu. 0
Nilai tipe data teks, ntext, atau gambar. 0
Nilai apa pun yang memiliki skala presisi detik lebih besar dari 3, (.0000 hingga .0000000...n). ISDATE akan mengembalikan 0 jika ekspresi adalah nilai datetime2, tetapi akan mengembalikan 1 jika ekspresi adalah nilai tanggalwaktu yang valid. 0
Nilai apa pun yang mencampur tanggal yang valid dengan nilai yang tidak valid, misalnya 1995-10-1a. 0

Contoh

J. Menggunakan ISDATE untuk menguji ekspresi tanggalwaktu yang valid

Contoh berikut menunjukkan cara menggunakan ISDATE untuk menguji apakah string karakter adalah tanggalwaktu yang valid.

IF ISDATE('2009-05-12 10:19:41.177') = 1  
    PRINT 'VALID'  
ELSE  
    PRINT 'INVALID';  

B. Memperlihatkan efek pengaturan SET DATEFORMAT dan SET LANGUAGE pada nilai yang dikembalikan

Pernyataan berikut menunjukkan nilai yang dikembalikan sebagai hasil dari pengaturan SET DATEFORMAT dan SET LANGUAGE.

/* Use these sessions settings. */  
SET LANGUAGE us_english;  
SET DATEFORMAT mdy;  
/* Expression in mdy dateformat */  
SELECT ISDATE('04/15/2008'); --Returns 1.  
/* Expression in mdy dateformat */  
SELECT ISDATE('04-15-2008'); --Returns 1.   
/* Expression in mdy dateformat */  
SELECT ISDATE('04.15.2008'); --Returns 1.   
/* Expression in myd  dateformat */  
SELECT ISDATE('04/2008/15'); --Returns 1.  
  
SET DATEFORMAT mdy;  
SELECT ISDATE('15/04/2008'); --Returns 0.  
SET DATEFORMAT mdy;  
SELECT ISDATE('15/2008/04'); --Returns 0.  
SET DATEFORMAT mdy;  
SELECT ISDATE('2008/15/04'); --Returns 0.  
SET DATEFORMAT mdy;  
SELECT ISDATE('2008/04/15'); --Returns 1.  
  
SET DATEFORMAT dmy;  
SELECT ISDATE('15/04/2008'); --Returns 1.  
SET DATEFORMAT dym;  
SELECT ISDATE('15/2008/04'); --Returns 1.  
SET DATEFORMAT ydm;  
SELECT ISDATE('2008/15/04'); --Returns 1.  
SET DATEFORMAT ymd;  
SELECT ISDATE('2008/04/15'); --Returns 1.  
  
SET LANGUAGE English;  
SELECT ISDATE('15/04/2008'); --Returns 0.  
SET LANGUAGE Hungarian;  
SELECT ISDATE('15/2008/04'); --Returns 0.  
SET LANGUAGE Swedish;  
SELECT ISDATE('2008/15/04'); --Returns 0.  
SET LANGUAGE Italian;  
SELECT ISDATE('2008/04/15'); --Returns 1.  
  
/* Return to these sessions settings. */  
SET LANGUAGE us_english;  
SET DATEFORMAT mdy;  

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

C. Menggunakan ISDATE untuk menguji ekspresi tanggalwaktu yang valid

Contoh berikut menunjukkan cara menggunakan ISDATE untuk menguji apakah string karakter adalah tanggalwaktu yang valid.

IF ISDATE('2009-05-12 10:19:41.177') = 1  
    SELECT 'VALID';  
ELSE  
    SELECT 'INVALID';  

Lihat Juga

CAST dan CONVERT (Transact-SQL)