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';