%SYS.TasK Related query

Hi Community,

I have to make a daily task (Job) which will run (7 am to 7 pm) in a day at an interval of 3 hours. Timings are as (7:00 am, 10:00 am,13:00 pm,16:00 pm,19:00 pm). But at each time when task will run i have to set a variables as per below condition

Sample:

1) If task run at 2019-03-19 07:00 am in morning

I  have to set two variables (start and end) whose value will become like this

(set starttime= 2019-03-09 07:00:00.00 and set endtime=2019-03-09 10:00:00.00)

2) But if task run at 2019-03-19 10:00 am in morning, the value should change as per below

(set starttime= 2019-03-09 10:00:00.00 and set endtime=2019-03-09 01:00:00.00

 

For setting the above variable as (set startime=2019-03-09 07:00:00.00) at 07.00 am on a particular day.

Query:1

I can use ($ztimestamp) to get UTC time and then convert it into local time i am using the below way is this correct?

 SET stamp=$ZTIMESTAMP
w !,stamp
SET localutc=$ZDATETIMEH(stamp,-3)
w $ZDATETIME(localutc,3,1,2)

 

This will change the current time stamp to local time . Means if task will run at 07:00 am in morning , the above 3 commands automatically set the start time to 2019-03-19 07:00:00.00

Query 2

My Question is how i can program this task in the below way

how can i know  that task is running at 07:00 am  so to set variable as (set starttime= 2019-03-09 07:00:00.00 and set endtime=2019-03-09 10:00:00.00)

if task is running at 10:00 am  so to set variable as (set starttime= 2019-03-09 10:00:00.00 and set endtime=2019-03-09 13:00:00.00)

if task is running at 13:00 pm  so to set variable as (set starttime= 2019-03-09 13:00:00.00 and set endtime=2019-03-09 16:00:00.00)

if task is running at 16:00 pm  so to set variable as (set starttime= 2019-03-09 16:00:00.00 and set endtime=2019-03-09 19:00:00.00)

is there any property of %sys.task to tell me that the current time is 07:00 am , 10:00 am or etc . so that i can set my variable accordingly. 

Please assist

 

 

 

 

 

 

 

 

  • 0
  • 0
  • 97
  • 2
  • 1

Answers

I can use ($ztimestamp) to get UTC time and then convert it into local time i am using the below way is this correct?

 SET stamp=$ZTIMESTAMP
w !,stamp
SET localutc=$ZDATETIMEH(stamp,-3)
w $ZDATETIME(localutc,3,1,2)

Yes, sure.

My Question is how i can program this task in the below way

You heed to add three hours.  Use DATEADD method for this:

write $SYSTEM.SQL.DATEADD("hour", 3, yourDate)

Thanks for the reply. This is only for the date i guess not timestamp, is there any direct command for this.

 But Now i want this way

I want the data between (2019-3-09 07:00:00.00 to 2019-3-09 10:00:00.00)

if task run at 10:00 am ( i will set End time : 2019-03-09 10:00:00 (with the help of above 3 commands) but how to set the start time which i need of 2019-03-09 07:00:00 means i have to go 3 hours before of current timestamp).

Also my property is type of %Timestamp only . Which command i can use to subtract the currenttimestamp with 3 hours .

You can use negative integers to subtract hours. DATEADD also words with timestamps:

write $SYSTEM.SQL.DATEADD("hour", -3, "2019-03-09 10:00:00")
>2019-03-09 07:00:00