yearBegin
Syntax
yearBegin(X, [startingMonth=1], [offset], [n=1])
Details
Return the first day of the year that X belongs to and that starts in the month of startingMonth.
By default, each period corresponds to one year, and the function returns the first day of the year containing X. The starting month of the year is determined by the startingMonth parameter.
When both offset and n are specified and n > 1, the function calculates period start dates based on n-year periods. In this case, offset determines how multi-year periods are aligned. Specifically, the system first calculates the start date of the year containing offset according to startingMonth, and uses that date as the reference point. A new period start boundary is then generated every n years, and the function returns the first day corresponding to the period to which X belongs.
Parameters
X is a scalar/vector of data type DATE, DATEHOUR, DATETIME, TIMESTAMP or NANOTIMESTAMP.
startingMonth (optional) is an integer between 1 and 12 indicating a month. The default value is 1.
offset (optional) is a scalar of the same data type as X. It must be no greater than the minimum value of X. The default value is the minimum value of X.
n (optional) is a positive integer. The default value is 1.
Returns
A scalar or vector of the DATE type.
Examples
yearBegin(2012.06.12, 10);
// output: 2011.10.01
yearBegin(2012.06.12, 4);
// output: 2012.04.01
yearBegin(2012.06.12);
// output: 2012.01.01
yearBegin(2012.06.12, 1, 2009.04.03, 2);
// output: 2011.01.01
date=2011.04.25+(1..10)*365
time = take(09:30:00, 10);
sym = take(`MSFT,10)
price= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29 52.38
qty = 2200 1900 2100 3200 6800 5400 1300 2500 8800 4500
t1 = table(date, time, sym, qty, price);
t1;
| date | time | sym | qty | price |
|---|---|---|---|---|
| 2012.04.24 | 09:30:00 | MSFT | 2200 | 49.6 |
| 2013.04.24 | 09:30:00 | MSFT | 1900 | 29.46 |
| 2014.04.24 | 09:30:00 | MSFT | 2100 | 29.52 |
| 2015.04.24 | 09:30:00 | MSFT | 3200 | 30.02 |
| 2016.04.23 | 09:30:00 | MSFT | 6800 | 174.97 |
| 2017.04.23 | 09:30:00 | MSFT | 5400 | 175.23 |
| 2018.04.23 | 09:30:00 | MSFT | 1300 | 50.76 |
| 2019.04.23 | 09:30:00 | MSFT | 2500 | 50.32 |
| 2020.04.22 | 09:30:00 | MSFT | 8800 | 51.29 |
| 2021.04.22 | 09:30:00 | MSFT | 4500 | 52.38 |
select avg(price),sum(qty) from t1 group by yearBegin(date, 10, 2010.10.01, 2);
| yearBegin_date | avg_price | sum_qty |
|---|---|---|
| 2010.10.01 | 49.6 | 2200 |
| 2012.10.01 | 29.49 | 4000 |
| 2014.10.01 | 102.495 | 10000 |
| 2016.10.01 | 112.995 | 6700 |
| 2018.10.01 | 50.805 | 11300 |
| 2020.10.01 | 52.38 | 4500 |
Related functions: yearEnd, businessYearBegin, businessYearEnd
