- 03/14/2017
- 3 minuti per leggere
-
- c
- j
- r
- M
- i
-
+6
Si applica a: SQL Server (tutte le versioni supportate) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Riporta 1 se l’espressione è un valore valido di data, ora o tempo; altrimenti, 0.
ISDATE restituisce 0 se l’espressione è un valore datetime2.
Per una panoramica di tutti i tipi di dati e funzioni Transact-SQL di data e ora, vedere Tipi di dati e funzioni di data e ora (Transact-SQL). Si noti che l’intervallo per i dati datetime è da 1753-01-01 a 9999-12-31, mentre l’intervallo per i dati di data è da 0001-01-01 a 9999-12-31.
Convenzioni di sintassi Transact-SQL
Sintassi
ISDATE ( expression )
Nota
Per vedere la sintassi Transact-SQL per SQL Server 2014 e precedenti, vedere Documentazione delle versioni precedenti.
Argomenti
espressione
È una stringa di caratteri o un’espressione che può essere convertita in una stringa di caratteri. L’espressione deve essere inferiore a 4.000 caratteri. I tipi di dati di data e ora, eccetto datetime e smalldatetime, non sono ammessi come argomento per ISDATE.
Tipo di ritorno
int
Remarks
ISDATE è deterministico solo se lo usate con la funzione CONVERT, se il parametro CONVERT style è specificato, e style non è uguale a 0, 100, 9 o 109.
Il valore di ritorno di ISDATE dipende dalle impostazioni impostate da SET DATEFORMAT, SET LANGUAGE e Configure the default language Server Configuration Option.
Formati di espressioneISDATE
Per esempi di formati validi per i quali ISDATE restituisce 1, vedere la sezione “Formati letterali di stringa supportati per datetime” negli argomenti datetime e smalldatetime. Per ulteriori esempi, vedere anche la colonna Input/Output della sezione “Arguments” di CAST e CONVERT.
La seguente tabella riassume i formati di espressione di input che non sono validi e che restituiscono 0 o un errore.
espressioneISDATE | valore di ritornoISDATE |
---|---|
NULL | 0 |
Valori di tipi di dati elencati in Tipi di dati in qualsiasi categoria di tipo di dati diversa da stringhe di caratteri, stringhe di caratteri Unicode, o data e ora. | 0 |
Valori dei tipi di dati testo, ntext, o immagine. | 0 |
Qualsiasi valore che ha una scala di precisione secondi maggiore di 3, (.0000 attraverso .0000000…n). ISDATE restituirà 0 se l’espressione è un valore datetime2, ma restituirà 1 se l’espressione è un valore datetime valido. | 0 |
Qualunque valore che mischia una data valida con un valore non valido, per esempio 1995-10-1a. | 0 |
Esempi
A. Usare ISDATE per testare un’espressione valida di datetime
L’esempio seguente mostra come usare ISDATE
per testare se una stringa di caratteri è un datetime valido.
IF ISDATE('2009-05-12 10:19:41.177') = 1 PRINT 'VALID' ELSE PRINT 'INVALID';
B. Mostrare gli effetti delle impostazioni SET DATEFORMAT e SET LANGUAGE sui valori di ritorno
Le seguenti dichiarazioni mostrano i valori che vengono 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 Parallel Data Warehouse
C. Usare ISDATE per testare un’espressione di data valida
L’esempio seguente mostra come usare ISDATE
per testare se una stringa di caratteri è una data valida.
IF ISDATE('2009-05-12 10:19:41.177') = 1 SELECT 'VALID'; ELSE SELECT 'INVALID';
Vedi anche
CAST e CONVERT (Transact-SQL)