CREATE OR ALTER FUNCTION GETDATE(
    CAMPO timestamp)
RETURNS DATE
AS
BEGIN
 RETURN cast(CAMPO AS date);
END;


CREATE OR ALTER FUNCTION GETHORA(
    CAMPO timestamp)
RETURNS time
AS
BEGIN

 RETURN cast(Campo as time);

END;

CREATE OR ALTER FUNCTION COMPARE_HORA(
    HORA_INICIO TIME,
    HORA_FIM TIME,
    MOMENTO TIME)
RETURNS VARCHAR(1)
AS
declare variable flag varchar(1);
    declare variable hora_inicio1 time;
    declare variable hora_fim1 time;
    declare variable hora_inicio2 time;
    declare variable hora_fim2 time;
BEGIN

    if(HORA_INICIO < HORA_FIM)then
    begin
        hora_inicio1 = HORA_INICIO;
        hora_fim1    = HORA_FIM;

        flag = IIF(MOMENTO >= hora_inicio1 AND MOMENTO <= hora_fim1,'1','0');
    end
    else
    begin
        hora_inicio1 = HORA_INICIO;
        hora_fim1    = cast('23:59:59.999' as time);

        hora_inicio2 = cast('00:00:00' as time);
        hora_fim2    = HORA_FIM;

        flag = IIF(MOMENTO >= hora_inicio1 AND MOMENTO <= hora_fim1,'1',IIF(MOMENTO >= hora_inicio2 AND MOMENTO <= hora_fim2,'1','0'));
    end

    return  flag;


END;
