SQL Server - Funções escalares DATA e HORA
Data de postagem: Jun 10, 2011 2:31:59 PM
GETDATE() - Retorna a data atual do sistema
SELECT GETDATE() --2006-06-03 16:16:57.670
GETUTCDATE() - Retorna a data/hora atual do sistema, de acordo com o padrão UTC (Universal Time Coordinate, ou Greenwich Mean Time)
SELECT GETUTCDATE() --2006-06-03 19:16:57.670
DAY(DATA) - Retorna o dia de uma data
SELECT DAY(GETDATE()) --3
SELECT DAY('2006-12-15') --15
SELECT DAY('15-12-2006') --ERRO 242: The conversion of a char data type to a datetime data type resulted --in an out-of-range datetime value.
SELECT DAY('12-15-2006') --15
SET DATEFORMAT DMY --MUDA O PADRÃO DE DATA DO SQL SERVER DE MDY (DEFAULT) PARA DMY
SELECT DAY('15-12-2006') --15
SELECT DAY('12-15-2006') --ERRO 242: The conversion of a char data type to a datetime data type resulted --in an out-of-range datetime value.
SET DATEFORMAT MDY --MUDA O PADRÃO DE DATA DO SQL SERVER DE DMY PARA O VALOR DEFAULT
MONTH(DATA) - Retorna o mês de uma data
SELECT MONTH(GETDATE()) --6
SELECT MONTH('2006-12-15') --12
SELECT MONTH('15-12-2006') --ERRO 242: The conversion of a char data type to a datetime data type resulted --in an out-of-range datetime value.
SELECT MONTH('12-15-2006') --12
SET DATEFORMAT DMY --MUDA O PADRÃO DE DATA DO SQL SERVER DE MDY (DEFAULT) PARA DMY
SELECT MONTH('15-12-2006') --12
SELECT MONTH('12-15-2006') --ERRO 242: The conversion of a char data type to a datetime data type resulted --in an out-of-range datetime value.
SET DATEFORMAT MDY --MUDA O PADRÃO DE DATA DO SQL SERVER DE DMY PARA O VALOR DEFAULT
YEAR(DATA) - Retorna o ano de uma data
SELECT YEAR(GETDATE()) --2006
SELECT YEAR('2006-12-15') --2006
SELECT YEAR('15-12-2006') --ERRO 242: The conversion of a char data type to a datetime data type resulted --in an out-of-range datetime value.
SELECT YEAR('12-15-2006') --2006
SET DATEFORMAT DMY --MUDA O PADRÃO DE DATA DO SQL SERVER DE MDY (DEFAULT) PARA DMY
SELECT YEAR('15-12-2006') --2006
SELECT YEAR('12-15-2006') --ERRO 242: The conversion of a char data type to a datetime data type resulted --in an out-of-range datetime value.
SET DATEFORMAT MDY --MUDA O PADRÃO DE DATA DO SQL SERVER DE DMY PARA O VALOR DEFAULT
SELECT YEAR('19660912') --1966
DATENAME(PARTE, DATA) - Retorna o nome da parte de uma data
SELECT DATENAME(YY, '2006-06-03 16:16:57.670') --2006 à YY = ANO DA DATA
SELECT DATENAME(QQ, '2006-06-03 16:16:57.670') --2 à QQ = TRIMESTRE DA DATA
SELECT DATENAME(MM, '2006-06-03 16:16:57.670') --June à MM = MÊS DA DATA
SELECT DATENAME(DY, '2006-06-03 16:16:57.670') --154 à DY = DIA DO ANO
SELECT DATENAME(DD, '2006-06-03 16:16:57.670') --3 à DD = DIA DO MÊS
SELECT DATENAME(WK, '2006-06-03 16:16:57.670') --22 à WK = SEMANA DO ANO
SELECT DATENAME(DW, '2006-06-03 16:16:57.670') --Saturday à DW = DIA DA SEMANA
SELECT DATENAME(HH, '2006-06-03 16:16:57.670') --16 à HH = HORA DA DATA
SELECT DATENAME(MI, '2006-06-03 16:16:57.670') --16 à MI = MINUTO DA DATA
SELECT DATENAME(SS, '2006-06-03 16:16:57.670') --57 à SS = SEGUNDO DA DATA
SELECT DATENAME(MS, '2006-06-03 16:16:57.670') --670 à MS = MILISSEGUNDO DA DATA
DATEPART(PARTE, DATA) - Retorna a parte de uma data
SELECT DATEPART(YY, '2006-06-03 16:16:57.670') --2006 à YY = ANO DA DATA
SELECT DATEPART(QQ, '2006-06-03 16:16:57.670') --2 à QQ = TRIMESTRE DA DATA
SELECT DATEPART(MM, '2006-06-03 16:16:57.670') --6 à MM = MÊS DA DATA
SELECT DATEPART(DY, '2006-06-03 16:16:57.670') --154 à DY = DIA DO ANO
SELECT DATEPART(DD, '2006-06-03 16:16:57.670') --3 à DD = DIA DO MÊS
SELECT DATEPART(WK, '2006-06-03 16:16:57.670') --22 à WK = SEMANA DO ANO
SELECT DATEPART(DW, '2006-06-03 16:16:57.670') --7 à DW = DIA DA SEMANA
SELECT DATEPART(HH, '2006-06-03 16:16:57.670') --16 à HH = HORA DA DATA
SELECT DATEPART(MI, '2006-06-03 16:16:57.670') --16 à MI = MINUTO DA DATA
SELECT DATEPART(SS, '2006-06-03 16:16:57.670') --57 à SS = SEGUNDO DA DATA
SELECT DATEPART(MS, '2006-06-03 16:16:57.670') --670 à MS = MILISSEGUNDO DA DATA
DATEADD(PARTE, VALOR, DATA) - Adiciona um valor a uma parte de uma data
SELECT DATEADD(YY, 10, '2006-06-03 16:16:57.670') --'2016-06-03 16:16:57.670'
SELECT DATEADD(YY, -10, '2006-06-03 16:16:57.670') --'1996-06-03 16:16:57.670'
SELECT DATEADD(MM, 12, '2006-06-03 16:16:57.670') --'2007-06-03 16:16:57.670'
SELECT DATEADD(DD, 30, '2006-06-03 16:16:57.670') --'2006-07-03 16:16:57.670'
SELECT DATEADD(DD, 60, '2006-06-03 16:16:57.670') --'2006-08-02 16:16:57.670'
DATEDIFF(PARTE, DATA_INICIAL, DATA_FINAL) - Subtrai a data inicial da data final, retornando o resultado na unidade definida em “PARTE”
SELECT DATEDIFF(YY, '1966-09-12', '2006-06-03 16:16:57.670') --40
SELECT DATEDIFF(MM, '1966-09-12', '2006-06-03 16:16:57.670') --477
SELECT DATEDIFF(DD, '1966-09-12', '2006-06-03 16:16:57.670') --14509
SELECT DATEDIFF(MI, '1966-09-12', '2006-06-03 16:16:57.670') --20893936