Condividi tramite


ISDATE (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Restituisce 1 se expression è un valore datetime valido; in caso contrario, 0.

ISDATE restituisce 0 se expression è un valore datetime2.

Per una panoramica di tutte le funzioni e i tipi di dati 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 relative alla 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 usata con la funzione CONVERT, se il parametro style della funzione CONVERT è specificato e se lo stile è diverso da 0, 100, 9 o 109.

Il valore restituito di ISDATE dipende dalle impostazioni definite in SET DATEFORMAT, SET LANGUAGE e Configurare l'opzione di configurazione del server default language.

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 in Tipi di dati in qualsiasi categoria diversa da stringhe di caratteri, stringhe di caratteri Unicode o data e 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) ISDATE restituisce 0 se expression è un valore datetime2 ma restituisce 1 se 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

R. Utilizzo di ISDATE per il test di un'espressione datetime valida

Nell'esempio seguente viene illustrato l'uso di 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;  

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

C. Utilizzo di ISDATE per il test di un'espressione datetime valida

Nell'esempio seguente viene illustrato l'uso di ISDATE per testare se una stringa di caratteri è un valore datetime valido.

IF ISDATE('2009-05-12 10:19:41.177') = 1  
    SELECT 'VALID';  
ELSE  
    SELECT 'INVALID';  

Vedi anche

CAST e CONVERT (Transact-SQL)