If you want to get the initial and last day of a month, I have a ClassMethod to you (version 2, fixed an error found by Eduard):
ClassMethodAs%Integer
The $SYSTEM.SQL.Functions.TODATE convert a string to a date and the $INCREMENT allows you increment or decrement a day from a date. When I call this method ..GetMonthPeriods(2022,2022) I got this:
[
{
"StartDate": "2022-01-01T00:00:00",
"EndDate": "2022-01-31T23:59:59"
},
{
"StartDate": "2022-02-01T00:00:00",
"EndDate": "2022-02-28T23:59:59"
},
{
"StartDate": "2022-03-01T00:00:00",
"EndDate": "2022-03-31T23:59:59"
},
{
"StartDate": "2022-04-01T00:00:00",
"EndDate": "2022-04-30T23:59:59"
},
{
"StartDate": "2022-05-01T00:00:00",
"EndDate": "2022-05-31T23:59:59"
},
{
"StartDate": "2022-06-01T00:00:00",
"EndDate": "2022-06-30T23:59:59"
},
{
"StartDate": "2022-07-01T00:00:00",
"EndDate": "2022-07-31T23:59:59"
},
{
"StartDate": "2022-08-01T00:00:00",
"EndDate": "2022-08-31T23:59:59"
},
{
"StartDate": "2022-09-01T00:00:00",
"EndDate": "2022-09-30T23:59:59"
},
{
"StartDate": "2022-10-01T00:00:00",
"EndDate": "2022-10-31T23:59:59"
},
{
"StartDate": "2022-11-01T00:00:00",
"EndDate": "2022-11-30T23:59:59"
},
{
"StartDate": "2022-12-01T00:00:00",
"EndDate": "2022-12-31T23:59:59"
}
]