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