ISDATE (Transact-SQL)

  • 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)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.