Trong SQL Server, bạn có thể sử dụng ISDATE()
chức năng để kiểm tra xem một giá trị có phải là một ngày hợp lệ hay không.
Cụ thể hơn, hàm này chỉ kiểm tra xem giá trị có phải là ngày hợp lệ hay không , thời gian hoặc ngày giờ giá trị, nhưng không phải là datetime2 giá trị. Nếu bạn cung cấp datetime2 giá trị, ISDATE()
sẽ cho bạn biết đó không phải là ngày (nó sẽ trả về 0
).
Bài viết này chứa các ví dụ về chức năng này.
Cú pháp
Đầu tiên, đây là cú pháp:
ISDATE ( expression )
Ở đâu expression
là biểu thức cần được kiểm tra.
Ví dụ 1 - Ngày hợp lệ
Dưới đây là một ví dụ sử dụng biểu thức hợp lệ:
SELECT ISDATE('2000-01-01') AS Result;
Kết quả:
+----------+ | Result | |----------| | 1 | +----------+
Điều này trả về 1
, có nghĩa là đó là ngày hợp lệ , thời gian hoặc ngày giờ giá trị.
Ví dụ 2 - Ngày không hợp lệ
Dưới đây là một ví dụ có biểu thức không hợp lệ:
SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Result;
Kết quả:
+----------+ | Result | |----------| | 0 | +----------+
Điều này trả về 0
, có nghĩa là đó không phải là ngày hợp lệ , thời gian hoặc ngày giờ giá trị.
Ví dụ 3 - Sử dụng Giá trị Trả lại
Bạn có thể sử dụng câu lệnh có điều kiện để sử dụng giá trị trả về (thay vì chỉ hiển thị 0
hoặc 1
).
Dưới đây là một ví dụ cơ bản trong đó chúng tôi chỉ cần in Ngày hợp lệ hoặc Ngày không hợp lệ , tùy thuộc vào việc giá trị trả về có phải là 1
hay không hoặc 0
:
IF ISDATE('2000-01-01') = 1 PRINT 'Valid Date' ELSE PRINT 'Invalid Date';
Kết quả:
Valid Date
Ví dụ 4 - Cài đặt LANGUAGE của bạn
Giá trị trả về của ISDATE()
phụ thuộc vào LANGUAGE
của bạn và DATEFORMAT
cài đặt.
Dưới đây là một ví dụ để chứng minh cách mà cùng một giá trị có thể trả lại các kết quả khác nhau tùy thuộc vào LANGUAGE
cài đặt được sử dụng.
Anh
SET LANGUAGE British; SELECT ISDATE('20/01/2000') AS '20/01/2000 in British';
Kết quả:
Changed language setting to British. +-------------------------+ | 20/01/2000 in British | |-------------------------| | 1 | +-------------------------+
us_english
SET LANGUAGE us_english; SELECT ISDATE('20/01/2000') AS '20/01/2000 in us_english';
Kết quả:
Changed language setting to us_english. +----------------------------+ | 20/01/2000 in us_english | |----------------------------| | 0 | +----------------------------+
Điều này xảy ra bởi vì British
sử dụng dd / MM / yyyy định dạng while us_english
sử dụng MM / dd / yyy .
Ví dụ 5 - Cài đặt DATEFORMAT của bạn
Như đã đề cập, giá trị trả về của ISDATE()
cũng phụ thuộc vào DATEFORMAT
của bạn cài đặt.
Dưới đây là một ví dụ để chứng minh cách mà cùng một giá trị có thể trả lại các kết quả khác nhau tùy thuộc vào DATEFORMAT
cài đặt được sử dụng.
dmy
SET DATEFORMAT dmy; SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is dmy';
Kết quả:
+--------------------------------------+ | 20/01/2000 while DATEFORMAT is dmy | |--------------------------------------| | 1 | +--------------------------------------+
thưa ngài
SET DATEFORMAT mdy; SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is mdy';
Kết quả:
+--------------------------------------+ | 20/01/2000 while DATEFORMAT is mdy | |--------------------------------------| | 0 | +--------------------------------------+