ISDATE (Transact-SQL)
Viene restituito 1 se il parametro expression è un valore date, time o datetime valido. In caso contrario, 0.
Tramite ISDATE viene restituito 0 se il parametro expression è un valore datetime2.
Per una panoramica di tutti i tipi di dati e delle funzioni di data e ora Transact-SQL, vedere Funzioni e tipi di dati di data e ora (Transact-SQL). Si noti che l'intervallo di dati datetime è compreso tra 1753-01-01 e 9999-12-31, mentre l'intervallo di dati relativi alla data è compreso tra 0001-01-01 e 9999-12-31.
Convenzioni della sintassi Transact-SQL
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. I tipi di dati relativi a data e ora, ad eccezione di datetime e smalldatetime, non sono consentiti come argomento di ISDATE.
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 Configurare l'opzione di configurazione del server 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). Tramite ISDATE viene restituito 0 se il parametro expression è un valore datetime2, ma viene restituito 1 se il parametro expression è un valore datetime valido. |
0 |
Qualsiasi valore che combina una data valida con un valore non valido, ad esempio 1995-10-1a. |
0 |
Esempi
A.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;