Algumas funções básicas de tratamento de datas
DEFINE VARIABLE primeiroDia AS DATE NO-UNDO.
DEFINE VARIABLE ultimoDia AS DATE NO-UNDO.
/* 1º dia do mês */
assign primeiroDia = today - day(today) + 1.
/* Ultimo dia mês */
assign ultimoDia = add-interval(today,1,"month") - day(today).
MESSAGE ultimoDia
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
/* Intervalo entre datas {'years' | 'months' | 'weeks'| 'days' | 'hours', 'minutes' | 'seconds' | 'milliseconds'} */
MESSAGE
interval(today,primeiroDia,"days")
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
/* Adicionar intervalo de tempo {'years' | 'months' | 'weeks'| 'days' | 'hours', 'minutes' | 'seconds' | 'milliseconds'} */
MESSAGE
add-interval(primeiroDia,5,"days")
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
Percorrer datas entre intervalo de datas
DEFINE VARIABLE dat AS DATE NO-UNDO.
do dat = date("01/06/2022") to date("05/06/2022"):
MESSAGE dat
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
end.
Função para mostrar o numero da semana no ano
function WeekNumberYear returns integer ( ptDate as date ):
define variable nrDias as int no-undo.
define variable datAux as date no-undo.
/* Quantidade de dias desde o inicio do ano */
datAux = date( 1, 1, year( ptDate ) ) + 1.
/* Agora a quantidade de dias + a posição do primeiro dia na semana*/
nrDias = ptDate - datAux + weekday(datAux).
/* Calculo para se obter a quantidade de semana, dividindo a quantidade de dias por 7 */
return int( trunc( nrDias / 7, 0 ) ) + (if nrDias mod 7 <> 0 then 1 else 0).
end function.
Função para mostrar o numero da semana no mês
function WeekNumberMonth returns integer ( ptDate as date ):
define variable nrDias as int no-undo.
define variable datAux as date no-undo.
/* dia 1º do mês */
datAux = ptDate - day(ptDate) + 1.
/* Agora a quantidade de dias + a posição do primeiro dia na semana*/
nrDias = ptDate - datAux + weekday(datAux).
/* Calculo para se obter a quantidade de semana, dividindo a quantidade de dias por 7 */
return int( trunc( nrDias / 7, 0 ) ) + ( if nrDias mod 7 <> 0 then 1 else 0 ).
end function.
Quarter
function QuarterNumber returns integer ( ptDate as date ):
define var iMonth as int no-undo.
iMonth = month( ptDate ).
return int( trunc( iMonth / 3, 0 ) ) + ( if iMonth mod 3 <> 0 then 1 else 0 ).
end function.
Função para retornar o nome do Mês
FUNCTION nomeMes RETURNS CHARACTER (input mes as date) :
DEFINE VARIABLE nome AS CHARACTER NO-UNDO.
CASE month(mes):
WHEN 1 THEN assign nome = "Janeiro".
WHEN 2 THEN assign nome = "Fevereiro".
WHEN 3 THEN assign nome = "Março".
WHEN 4 THEN assign nome = "Abril".
WHEN 5 THEN assign nome = "Maio".
WHEN 6 THEN assign nome = "Junho".
WHEN 7 THEN assign nome = "Julho".
WHEN 8 THEN assign nome = "Agosto".
WHEN 9 THEN assign nome = "Setembro".
WHEN 10 THEN assign nome = "Outubro".
WHEN 11 THEN assign nome = "Novembro".
WHEN 12 THEN assign nome = "Dezembro".
END CASE.
RETURN nome. /* Function return value. */
END FUNCTION.
Função para retornar o nome do dia na semana
FUNCTION nomeDia RETURNS CHARACTER (input pData as date) :
DEFINE VARIABLE nome AS CHARACTER NO-UNDO.
CASE weekday(pData):
WHEN 1 THEN assign nome = "Domingo".
WHEN 2 THEN
assign nome = "Segunda".
WHEN 3 THEN assign nome = "Terça".
WHEN 4 THEN assign nome = "Quarta".
WHEN 5 THEN assign nome = "Quinta".
WHEN 6 THEN assign nome = "Sexta".
WHEN 7 THEN assign nome = "Sábado".
END CASE.
RETURN nome. /* Function return value. */
END FUNCTION.
Algumas dessas funções foram originalmente postadas no progresstak
Para mais conteúdos relacionado clique aqui.