smalldatetime (Transact-SQL)

Define uma data que é combinada com uma hora do dia. A hora se baseia em um dia de 24 horas, com segundos sempre zero (:00) e sem frações de segundo.

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 em segundos. datetimeoffset fornece suporte de fuso horário para aplicativos globalmente implantados.

smalldatetime Descrição

Sintaxe

smalldatetime

Uso

DECLARE @MySmalldatetime smalldatetime

CREATE TABLE Table1 ( Column1 smalldatetime )

Formatos de literais de cadeia de caracteres padrão

(usado para cliente de nível inferior)

Não aplicável

Intervalo de datas

1900-01-01 a 2079-06-06

1º de janeiro de 1900 a 6 de junho de 2079

Intervalo de horas

00:00:00 a 23:59:59

2007-05-09 23:59:59 será arredondado para

2007-05-10 00:00:00

Intervalos de elementos

AAAA são quatro dígitos, variando de 1900 a 2079 e representando o 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. Valores iguais ou menores que 29,998 segundos têm o minuto arredondado para baixo; valores iguais ou maiores que 29,999 têm o minuto arredondado para cima.

Comprimento de caracteres

máximo de 19 posições

Tamanho de armazenamento

4 bytes, fixo.

Precisão

Um minuto

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

Não

Reconhecimento de horário de verão

Não

Conformidade com ANSI e ISO 8601

smalldatetime não está em conformidade com ANSI ou ISO 8601.

Convertendo dados date e time

Ao fazer a conversão em tipos de dados de data e hora, o SQL Server rejeita todos os valores que não pode reconhecer como datas ou horas. Para obter informações sobre como usar as funções CAST e CONVERT com data e hora data, consulte CAST e CONVERT (Transact-SQL).

Convertendo smalldatetime em outros tipos de data e hora

A tabela a seguir descreve o que ocorre quando um tipo de dados smalldatetime é convertido em outros tipos de dados de data e hora.

Tipo de dados para converter em

Detalhes da conversão

date

O ano, o mês e o dia são copiados.

O código a seguir mostra os resultados da conversão de um valor smalldatetime em um valor date.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @date date = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @date AS 'date';
--Result
--@smalldatetime          date
------------------------- ----------
--1955-12-13 12:43:00     1955-12-13
--
--(1 row(s) affected)

time(n)

As horas, os minutos e os segundos são copiados. As frações de segundo são definidas como 0.

O código a seguir mostra os resultados da conversão de um valor smalldatetime em um valor time(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @time time(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @time AS 'time';
--Result
--@smalldatetime          time
------------------------- -------------
--1955-12-13 12:43:00     12:43:00.0000
--
--(1 row(s) affected)

datetime

O valor smalldatetime é copiado para o valor datetime. As frações de segundo são definidas como 0.

O código a seguir mostra os resultados da conversão de um valor smalldatetime em um valor datetime.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime datetime = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime AS 'datetime';
--Result
--@smalldatetime          datetime
------------------------- -----------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.000
--
--(1 row(s) affected)

datetimeoffset(n)

O valor smalldatetime é copiado para o valor datetimeoffset(n). Os segundos fracionários são definidos como 0 e o deslocamento de fuso horário é definido como +00:0.

O código a seguir mostra os resultados da conversão de um valor smalldatetime em valor datetimeoffset(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetimeoffset datetimeoffset(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetimeoffset AS 'datetimeoffset(4)';
--Result
--@smalldatetime          datetimeoffset(4)
------------------------- ------------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000 +00:0
--
--(1 row(s) affected)

datetime2(n)

O valor smalldatetime é copiado para o valor datetime2(n). As frações de segundo são definidas como 0.

O código a seguir mostra os resultados da conversão de um valor smalldatetime em valor datetime2(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime2 datetime2(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime2 AS ' datetime2(4)';
--Result
--@smalldatetime           datetime2(4)
------------------------- ------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000
--
--(1 row(s) affected)

Exemplos

A.Convertendo literais de cadeia de caracteres com segundos para smalldatetime

O exemplo a seguir compara a conversão de segundos em literais de cadeia de caracteres para smalldatetime.

SELECT 
     CAST('2007-05-08 12:35:29'     AS smalldatetime)
    ,CAST('2007-05-08 12:35:30'     AS smalldatetime)
    ,CAST('2007-05-08 12:59:59.998' AS smalldatetime);

Entrada

Saída

2007-05-08 12:35:29

2007-05-08 12:35:00

2007-05-08 12:35:30

2007-05-08 12:36:00

2007-05-08 12:59:59.998

2007-05-08 13:00:00

B.Comparando tipos de dados de data e hora

O exemplo a seguir compara os resultados da conversão de uma cadeia de caracteres para cada tipo de dados de data e hora.

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

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

CAST e CONVERT (Transact-SQL)