Partilhar via


datetime (Transact-SQL)

Define uma data combinada com uma hora do dia que inclui frações de segundos e se baseia em um período de 24 horas.

ObservaçãoObservação

Use os tipos de dados time, date, datetime2 e datetimeoffset para o novo trabalho. Esses tipos estão de acordo com o SQL padrão. Eles são mais portáteis. time, datetime2 e datetimeoffset fornecem mais precisão de segundos. datetimeoffset fornece suporte a fuso horário para aplicativos implantados globalmente.

Para obter uma visão geral de todos os tipos de dados e funções de data e hora do Transact-SQL, consulte Funções Date e Time (Transact-SQL). Para obter informações e exemplos comuns aos tipos de dados e funções de data e hora, consulte Usando dados de data e hora.

Descrição de datetime

Propriedade

Valor

Sintaxe

datetime

Uso

DECLARE @MyDatetime datetime

CREATE TABLE Table1 ( Column1 datetime )

Formatos de literais de cadeia de caracteres padrão

(usado para cliente de nível inferior)

Não aplicável

Intervalo de datas

Janeiro 1, 1753, a dezembro 31, 9999

Intervalo de tempo

00:00:00 a 23:59:59.997

Intervalo de deslocamento de fuso horário

Nenhum

Intervalos de elementos

AAAA são quatro dígitos de 1753 a 9999 que representam um ano.

MM são dois dígitos, variando de 01 a 12, que representam um mês do ano especificado.

DD são dois dígitos, variando de 01 a 31, dependendo do mês, que representam um dia do mês especificado.

hh são dois dígitos, variando de 00 a 23, que representam a hora.

mm são dois dígitos, variando de 00 a 59, que representam o minuto.

ss são dois dígitos, variando de 00 a 59, que representam o segundo.

n* vai de zero a três dígitos, variando de 0 a 999, representando as frações de segundo.

Comprimento de caracteres

19 posições no mínimo e 23 no máximo

Tamanho de armazenamento

8 bytes

Precisão

Os valores são arredondados em incrementos de .000, .003 ou .007 segundos.

Valor padrão

1900-01-01 00:00:00

Calendário

Gregoriano (não inclui o intervalo completo de anos.)

Precisão de segundo fracionário definida pelo usuário

Não

Preservação e reconhecimento de deslocamento de fuso horário

Nenhum(a)

Reconhecimento de horário de verão

Não

Formatos de literais de cadeia de caracteres com suporte para datetime

As tabelas a seguir listam os formatos de literais de cadeia de caracteres com suporte para datetime. Exceto para ODBC, os literais de cadeia de caracteres datetime estão entre aspas simples ('), por exemplo, 'string_literaL.' Se o ambiente não for us_english, os literais de cadeia de caracteres devem estar no formato N'string_literaL'.

Numérico

Descrição

Formatos de data:

[0]4/15/[19]96--(mda)

[0]4-15-[19]96 -- (mda)

[0]4.15.[19]96 -- (mda)

[0]4/[19]96/15 -- (mad)

15/[0]4/[19]96 -- (dma)

15/[19]96/[0]4 -- (dam)

[19]96/15/[0]4 -- (adm)

[19]96/[0]4/15 -- (amd)

Formatos de hora:

14:30

14:30[:20:999]

14:30[:20.9]

4am

4 PM

Você pode especificar dados de data com um mês numérico especificado. Por exemplo, 5/20/97 representa o vigésimo dia de maio de 1997. Ao usar um formato de data numérico, especifique o mês, o dia e o ano em uma cadeia de caracteres com barras (/), hífens (-) ou pontos (.) como separadores. Essa cadeia de caracteres deve ser exibida da seguinte forma:

  • número separador número separador number [time] [time]

Quando o idioma é definido como us_english, a ordem padrão da data é mda. Você pode alterar a ordem da data usando a instrução SET DATEFORMAT.

A configuração de SET DATEFORMAT determina como são interpretados os valores de data. Se a ordem não corresponder à configuração, os valores não serão interpretados como datas, porque eles estarão fora do intervalo ou serão mal interpretados. Por exemplo, 12/10/08 pode ser interpretada como uma de seis datas, dependendo da configuração DATEFORMAT. Um ano de quatro partes é interpretado como o ano.

Alfabético

Descrição

Apr[il] [15][,] 1996

Apr[il] 15[,] [19]96

Apr[il] 1996 [15]

[15] Apr[il][,] 1996

15 Apr[il][,][19]96

15 [19]96 apr[il]

[15] 1996 apr[il]

1996 APR[IL] [15]

1996 [15] APR[IL]

Você pode especificar dados de data com um mês especificado como o nome de mês cheio. Por exemplo, abril ou a abreviação Apr especificadas na linguagem atual; vírgulas são opcionais e não há diferenciação entre letras maiúsculas e minúsculas.

Aqui estão algumas diretrizes para o uso de formatos de data alfabéticos:

  • Insira os dados de data e hora com aspas simples ('). Para idiomas diferentes de inglês, use N'

  • Os caracteres entre parênteses são opcionais.

  • Se você especificar apenas os dois últimos dígitos do ano, os valores menores que os dois últimos dígitos do valor da opção de configuração two digit year cutoff estarão no mesmo século que o ano de corte. Os valores maiores ou iguais ao valor dessa opção estarão no século anterior ao ano de corte. Por exemplo, se o two digit year cutoff for 2050 (padrão), 25 será interpretado como 2025 e 50 será interpretado como 1950. Para evitar ambiguidade, use anos de quatro dígitos.

  • Se o dia estiver ausente, o primeiro dia do mês será fornecido.

A configuração de sessão SET DATEFORMAT não é aplicada quando você especifica o mês de forma alfabética.

ISO 8601

Descrição

AAAA-MM-DDThh:mm:ss[.mmm]

AAAAMMDD[ hh:mm:ss[.mmm]]

Exemplos:

  • 2004-05-23T14:25:10

  • 2004-05-23T14:25:10.487

Para usar o formato ISO 8601, você deve especificar cada elemento no formato. Isto também inclui o T, os dois pontos (:) e o ponto final (.) que são mostrados no formato.

Os parênteses indicam que o componente de fração de segundo é opcional. O componente de hora é especificado no formato de 24 horas.

O T indica o início da parte de hora do valor datetime.

A vantagem de usar o formato ISO 8601 é que ele é um padrão internacional com especificação não ambígua. Além disso, esse formato não é afetado pela configuração SET DATEFORMAT ou SET LANGUAGE.

Não separado

Descrição

AAAAMMDDThh:mm:ss[.mmm]

ODBC

Descrição

{ ts '1998-05-02 01:23:56.123' }

{ d '1990-10-02' }

{ t '13:33:41' }

A API ODBC define sequências de escape para representar valores de data e hora que o ODBC chama de dados de carimbo de data/hora. Esse formato de carimbo de data/hora de ODBC também é suportado pela definição de idioma OLE DB (DBGUID-SQL) suportada pelo Microsoftprovedor OLE DB para SQL Server. Os aplicativos que usam ADO, OLE DB e as APIs baseadas em ODBC podem usar esse formato de carimbo de data/hora de ODBC para representar datas e horas.

As sequências de escape de carimbo de data/hora ODBC estão no formato: { literal_type 'constant_value' }:

  • literal_type especifica o tipo da sequência de escape. Os carimbos de data/hora têm três especificadores literal_type:

    • d = somente data

    • t = somente hora

    • ts = carimbo de data/hora (hora + data)

  • 'constant_value' é o valor da sequência de escape. constant_value deve seguir esses formatos para cada literal_type.

    literal_typeconstant_value format
    d aaaa-mm-dd
    t hh:mm:ss[.fff]
    ts aaaa-mm-dd hh:mm:ss[.fff]

Arredondando a precisão de segundo fracionário de datetime

Os valores datetime são arredondados em incrementos de .000, .003 ou .007 segundos, como mostrado na seguinte tabela.

Valor especificado pelo usuário

Valor armazenado pelo sistema

01/01/98 23:59:59.999

1998-01-02 00:00:00.000

01/01/98 23:59:59.995

01/01/98 23:59:59.996

01/01/98 23:59:59.997

01/01/98 23:59:59.998

1998-01-01 23:59:59.997

01/01/98 23:59:59.992

01/01/98 23:59:59.993

01/01/98 23:59:59.994

1998-01-01 23:59:59.993

01/01/98 23:59:59.990

01/01/98 23:59:59.991

1998-01-01 23:59:59.990

Conformidade com ANSI e ISO 8601

datetime não tem conformidade com ANSI ou ISO 8601.

Exemplos

O exemplo a seguir compara os resultados da conversão de uma cadeia de caracteres com cada tipo de dados de date e time.

SELECT 
     CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' 
    ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 
        'smalldatetime' 
    ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 
        'datetime2'
    ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 
        'datetimeoffset';

Aqui está o conjunto de resultados.

Tipo de dados

Saída

time

12:35:29. 1234567

date

2007-05-08

smalldatetime

2007-05-08 12:35:00

datetime

2007-05-08 12:35:29.123

datetime2

2007-05-08 12:35:29. 1234567

datetimeoffset

2007-05-08 12:35:29.1234567 +12:15

Consulte também

Referência