ISDATE (Transact-SQL)
Restituisce 1 se expression è un valore date, time, o datetime valido. In caso contrario, restituisce 0.
Per una panoramica di tutti i tipi di dati e delle funzioni di data e ora Transact-SQL, vedere Funzioni di data e ora (Transact-SQL). Per informazioni ed esempi comuni ai tipi di dati e alle funzioni di data e ora, vedere Utilizzo di dati relativi a data e ora.
Sintassi
ISDATE ( expression )
Argomenti
- expression
Stringa di caratteri o espressione che può essere convertita in una stringa di caratteri. L'espressione deve essere di lunghezza inferiore a 4.000 caratteri.
Tipo restituito
int
Osservazioni
La funzione ISDATE è deterministica solo quando viene utilizzata con la funzione CONVERT, se viene specificato il parametro di stile della funzione CONVERT e lo stile è diverso da 0, 100, 9 o 109.
Il valore restituito di ISDATE dipende dalle impostazioni definite da SET DATEFORMAT, SET LANGUAGE e dall'opzione default language. Per alcuni esempi, vedere esempio C.
Formati di espressione ISDATE
Per alcuni esempi di formati validi per i quali ISDATE restituisce 1, vedere la sezione relativa ai formati di valore letterale stringa supportati per datetime negli argomenti datetime e smalldatetime. Per esempi aggiuntivi, vedere anche la colonna Input/output della sezione "Argomenti" di CAST e CONVERT.
Nella tabella seguente sono riepilogati i formati di espressione non validi e che restituiscono 0 o un errore.
Espressione ISDATE |
Valore restituito ISDATE |
---|---|
NULL |
0 |
Valori dei tipi di dati elencati nei Tipi di dati di qualsiasi categoria diversa dalle stringhe di caratteri, dalle stringhe di caratteri Unicode o da data ed ora. |
0 |
Valori dei tipi di dati text, ntext o image. |
0 |
Qualsiasi valore con una scala di precisione in secondi frazionari maggiore di 3 (da 0,0000 a 0,0000000... n) |
0 |
Qualsiasi valore che combina una data valida con un valore non valido, ad esempio 1995-10-1a. |
0 |
Esempi
B. Utilizzo di ISDATE per il test di un'espressione datetime valida
Nell'esempio seguente viene illustrato come utilizzare ISDATE per testare se una stringa di caratteri è un valore datetime valido.
IF ISDATE('2009-05-12 10:19:41.177') = 1
PRINT 'VALID'
ELSE
PRINT 'INVALID'
B. Effetti delle impostazioni di SET DATEFORMAT e SET LANGUAGE sui valori restituiti
Nelle istruzioni seguenti sono mostrati i valori restituiti come risultato delle impostazioni di SET DATEFORMAT e 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;