- 07/22/2017
- 4 minutos para ler
-
- M
- j
- c
- M
- m
-
+4
Candidata-se a: ServidorSQL (todas as versões suportadas) Banco de dados SQL de Azure Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Define uma data que é combinada com uma hora do dia. A hora é baseada em um dia de 24 horas, com segundos sempre zero (:00) e sem segundos fracionários.
Nota
Utilizar a hora, data, datatime2 e datatimeoffset dos tipos de dados para novos trabalhos. Estes tipos estão alinhados com o padrão SQL. Eles são mais portáteis. time, datetime2 e datetimeoffset fornecem mais precisão em segundos. datetimeoffset fornece suporte a fuso horário para aplicativos implementados globalmente.
Descriçãosmalldatetime
Propriedade | Valor |
---|---|
Sintaxe | smalldatetime |
Utilização | DECLARE @MySmalldatetime smalldatetime Tabela de ECREATE Tabela1 ( Coluna1 smallldatetime ) |
Default string literal formats (usado para down-nível cliente) |
Não se aplica |
Gama de datas | 1900-01-01 até 2079-06-06 Janeiro 1, 1900, até 6 de junho de 2079 |
Avalo de tempo | 00:00:00 até 23:59:59 2007-05-09 23:59:59>Já vai arredondar até 2007-05-10 00:00:00:00 |
Element ranges | YYYYYY são quatro dígitos, variando de 1900, até 2079, que representam um ano. MM são dois dígitos, variando de 01 a 12, que representam um mês no 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 inferiores a 29,998 segundos são arredondados para baixo para o minuto mais próximo. Valores iguais ou superiores a 29,999 segundos são arredondados para o minuto mais próximo. |
Comprimento do caractere | 19 posições máximo |
Tamanho de armazenamento | 4 bytes, fixo. |
Calendário | Um minuto |
Valor por defeito | 1900-01-01 00:00:00 |
Calendário | Gregoriano (Não inclui o intervalo completo de anos.) |
Utilizador-segunda precisão fracionária definida | Não |
Sensibilização e preservação da zona temporal | Não |
Conhecimento de economia de luz do dia | Não |
Conformidade com a ANSI e ISO 8601
smalldatetime não está em conformidade com a ANSI ou ISO 8601.
Converter dados de data e hora
Quando você converte para tipos de dados de data e hora, o SQL Server rejeita todos os valores que não consegue reconhecer como datas ou horas. Para informações sobre o uso das funções CAST e CONVERT com dados de data e hora, veja CAST e CONVERT (Transact-SQL).
Convertendo dados de data e hora pequenos para outros tipos de data e hora
Esta seção descreve o que ocorre quando um tipo de dados de data e hora pequenos são convertidos para outros tipos de dados de data e hora.
Para uma conversão para data, o ano, mês e dia são copiados. O código a seguir mostra os resultados da conversão de um valor smalldatetime
para 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)
Quando a conversão é para time(n), as horas, minutos e segundos são copiados. Os segundos fracionários são definidos como 0. O seguinte código mostra o resultado da conversão de um valor smalldatetime
para um valor time(4)
valor.
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)
Quando a conversão é para o datetime, o valor do smallldatetime é copiado para o valor do datetime. Os segundos fracionários são definidos como 0. O seguinte código mostra os resultados da conversão de um valor smalldatetime
para um valor datetime
valor.
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)
Para uma conversão para datetimeoffset(n), o valor de datetimeoffset(n) é copiado para o valor de datetimeoffset(n). Os segundos fracionários são definidos para 0, e o deslocamento do fuso horário é definido para +00:0. O código a seguir mostra os resultados da conversão de um valor smalldatetime
para um valor datetimeoffset(4)
valor.
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)
Para a conversão para datetime2(n), o valor de datetime2(n) é copiado para o valor de datetime2(n). Os segundos fracionários são definidos como 0. O seguinte código mostra os resultados da conversão de um valor smalldatetime
para um valor datetime2(4)
valor.
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. Fundindo literais de string com segundos a um tempo pequeno
O exemplo seguinte compara a conversão de segundos em literais de string a 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);
Input | Output |
---|---|
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 os tipos de dados de data e hora
O exemplo seguinte compara os resultados da fundição de uma string com cada tipo de dado 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';