Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

ISDATE () Ví dụ trong SQL Server

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                                    |
+--------------------------------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlDependency không kích hoạt sự kiện OnChange khi tập dữ liệu được thay đổi

  2. Cách đặt tùy chọn maxrecursion cho một CTE bên trong một Table-Valued-Function

  3. Có gì mới trong SQL Server 2019?

  4. Sử dụng Excel VBA để chạy truy vấn SQL

  5. Ký tự thoát trong SQL Server