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.

Icona di collegamento a un argomentoConvenzioni 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.

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;

Vedere anche

Riferimento