Compartilhar via


smalldatetime (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Banco de dados SQL no Microsoft Fabric

Define uma data que é combinada com uma hora do dia. O tempo é baseado em um dia de 24 horas, com segundos sempre zero (:00) e sem segundos fracionários.

Note

Use o de hora, de data, datetime2 e tipos de dados datetimeoffset para um novo trabalho. Esses tipos se alinham com o padrão SQL, pois são mais portáteis. time, datetime2 e datetimeoffset fornecem mais precisão de segundos. datetimeoffset é compatível com fuso horário para aplicativos implantados globalmente.

Descrição do SmallDateTime

Property Value
Syntax smalldatetime
Usage DECLARE @MySmallDateTime SMALLDATETIME;

CREATE TABLE Table1 (Column1 SMALLDATETIME);
formatos literais de cadeia de caracteres padrão
(usado para cliente de nível inferior)
Não aplicável
Intervalo de datas 1900-01-01 2079-06-06

1º de janeiro de 1900 a 6 de junho de 2079
Intervalo de tempo 00:00:00 23:59:59

2024-05-09 23:59:59 arredonda para 2024-05-10 00:00:00
Intervalos de elementos yyyy são quatro dígitos, variando de 1900 a 2079, o que representa um ano.

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

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

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

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

ss são dois dígitos, variando de 00 a 59, que representa o segundo. Valores equivalentes a 29,998 segundos ou menos são arredondados para baixo até o minuto mais próximo. Valores equivalentes a 29,999 segundos ou mais são arredondados para cima até o minuto mais próximo.
Comprimento do caractere máximo de 19 posições
Tamanho do armazenamento 4 bytes, corrigidos
Accuracy Um minuto
Valor padrão 1900-01-01 00:00:00
Calendar Gregorian

(Não inclui o intervalo completo de anos.)
de precisão fracionária definida pelo usuário No
de reconhecimento e preservação de fuso horário No
de reconhecimento do horário de verão No

Conformidade com ANSI e ISO 8601

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

Converter dados de data e hora

Ao fazer a conversão em tipos de dados de data e hora, 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 dados de data e hora, consulte CAST e CONVERT.

Converter smalldatetime em outros tipos de data e hora

Esta seção descreve o que ocorre quando um tipo de dados smalldatetime é convertido em outros tipos de dados de data e hora.

Para uma conversão em data, 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 de de smalldatetime em um valor de data .

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @date AS DATE = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @date AS 'date';

Aqui está o conjunto de resultados.

@smalldatetime        date
--------------------- ----------
1955-12-13 12:43:00   1955-12-13

Quando a conversão é para tempo(n), as horas, minutos e segundos são copiados. Os segundos fracionários são definidos como 0. O código a seguir mostra os resultados da conversão de um valor de de smalldatetime em um valor de time(4) .

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @time AS TIME (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @time AS 'time';

Aqui está o conjunto de resultados.

@smalldatetime          time
----------------------- -------------
1955-12-13 12:43:00     12:43:00.0000

Quando a conversão é em datetime, o valor smalldatetime é copiado para o valor datetime. Os segundos fracionários são definidos como 0. O código a seguir mostra os resultados da conversão de um valor de de smalldatetime em um valor datetime.

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime AS DATETIME = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime AS 'datetime';

Aqui está o conjunto de resultados.

@smalldatetime          datetime
----------------------- -----------------------
1955-12-13 12:43:00     1955-12-13 12:43:00.000

Para uma conversão em datetimeoffset(n), o valor de smalldatetime é copiado para o valor datetimeoffset(n). Os segundos fracionários são definidos como 0e o deslocamento de fuso horário é definido como +00:0. O código a seguir mostra os resultados da conversão de um valor de de smalldatetime em um valor datetimeoffset(4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetimeoffset AS DATETIMEOFFSET (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetimeoffset AS 'datetimeoffset(4)';

Aqui está o conjunto de resultados.

@smalldatetime        datetimeoffset(4)
--------------------- ------------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000 +00:0

Para a conversão em datetime2(n) , o valor smalldatetime é copiado para o valor datetime2(n) . Os segundos fracionários são definidos como 0. O código a seguir mostra os resultados da conversão de um valor de de smalldatetime em um valor de datetime2(4) .

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime2 AS DATETIME2 (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime2 AS ' datetime2(4)';

Aqui está o conjunto de resultados.

@smalldatetime        datetime2(4)
--------------------- ------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000

Examples

A. Conversão de 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 ('2024-05-08 12:35:29' AS SMALLDATETIME),
       CAST ('2024-05-08 12:35:30' AS SMALLDATETIME),
       CAST ('2024-05-08 12:59:59.998' AS SMALLDATETIME);
Input Output
2024-05-08 12:35:29 2024-05-08 12:35:00
2024-05-08 12:35:30 2024-05-08 12:36:00
2024-05-08 12:59:59.998 2024-05-08 13:00:00

B. Comparar tipos de dados de data e hora

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

SELECT CAST ('2024-05-08 12:35:29.1234567 +12:15' AS TIME (7)) AS 'time',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATE) AS 'date',
       CAST ('2024-05-08 12:35:29.123' AS SMALLDATETIME) AS 'smalldatetime',
       CAST ('2024-05-08 12:35:29.123' AS DATETIME) AS 'datetime',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIME2 (7)) AS 'datetime2',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIMEOFFSET (7)) AS 'datetimeoffset';
Tipo de dados Output
time 12:35:29.1234567
date 2024-05-08
smalldatetime 2024-05-08 12:35:00
datetime 2024-05-08 12:35:29.123
datetime2 2024-05-08 12:35:29.1234567
datetimeoffset 2024-05-08 12:35:29.1234567 +12:15