weekBegin

语法

weekBegin(X, [weekday=0], [offset], [n=1])

参数

X 可以是DATE, DATETIME, DATEHOUR, TIMESTAMP或NANOTIMESTAMP类型的标量或向量。

weekday 是0到6之间的整数,0表示星期一,1表示星期二,… ,6表示星期日。默认值为0。

offset 是与X类型相同的标量,并且它必须小于等于X中的最小值。它是一个可选参数。如果没有指定,offset 默认为X中的最小值。

n 是一个正整数。它是一个可选参数,默认值为1。

详情

返回 X 所在星期或上一个星期中 weekday 对应的日期。

  • 如果参数 weekday > weekday ( X , false ),week函数返回X所在星期的上一个星期中 weekday 对应的日期。

  • 如果参数 weekday <= weekday ( X , false ),week函数返回X所在星期中 weekday 对应的日期。

如果指定了 offset ,表示从 offset 开始,结果每隔 n 个星期更新一次。注意,只有当 n >1时,offset 才会生效。

例子

例1:

$ t = table(2017.12.01..2017.12.14 as date);
$ update t set weekday=weekday(date, false), weekBegin=weekBegin(date), weekBegin4=weekBegin(date,4);
$ t;

date

weekday

weekBegin

weekBegin4

2017.12.01

4

2017.11.27

2017.12.01

2017.12.02

5

2017.11.27

2017.12.01

2017.12.03

6

2017.11.27

2017.12.01

2017.12.04

0

2017.12.04

2017.12.01

2017.12.05

1

2017.12.04

2017.12.01

2017.12.06

2

2017.12.04

2017.12.01

2017.12.07

3

2017.12.04

2017.12.01

2017.12.08

4

2017.12.04

2017.12.08

2017.12.09

5

2017.12.04

2017.12.08

2017.12.10

6

2017.12.04

2017.12.08

2017.12.11

0

2017.12.11

2017.12.08

2017.12.12

1

2017.12.11

2017.12.08

2017.12.13

2

2017.12.11

2017.12.08

2017.12.14

3

2017.12.11

2017.12.08

例2:

$  t = table(2018.01.03+0..10*3 as date, 0..10 as x);
$  update t set weekday=weekday(date, false), weekBegin=weekBegin(date,,2018.01.02,2);
$  t;

date

x

weekday

weekBegin

2018.01.03

0

2

2018.01.01

2018.01.06

1

5

2018.01.01

2018.01.09

2

1

2018.01.01

2018.01.12

3

4

2018.01.01

2018.01.15

4

0

2018.01.15

2018.01.18

5

3

2018.01.15

2018.01.21

6

6

2018.01.15

2018.01.24

7

2

2018.01.15

2018.01.27

8

5

2018.01.15

2018.01.30

9

1

2018.01.29

2018.02.02

10

4

2018.01.29

例3:

$ date=2012.10.02 2012.10.03 2012.10.07 2012.10.08 2012.10.12 2012.10.16 2012.10.18 2012.10.20 2012.10.25 2012.10.28
$ time=[09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12,09:38:13]
$ 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.10.02

09:34:07

MSFT

2200

49.6

2012.10.03

09:36:42

MSFT

1900

29.46

2012.10.07

09:36:51

MSFT

2100

29.52

2012.10.08

09:36:59

MSFT

3200

30.02

2012.10.12

09:32:47

MSFT

6800

174.97

2012.10.16

09:35:26

MSFT

5400

175.23

2012.10.18

09:34:16

MSFT

1300

50.76

2012.10.20

09:34:26

MSFT

2500

50.32

2012.10.25

09:38:12

MSFT

8800

51.29

2012.10.28

09:38:13

MSFT

4500

52.38

$select avg(price),sum(qty) from t1 group by weekBegin(date, 4, 2012.10.01, 2);

weekBegin_date

avg_price

sum_qty

2012.09.28

34.65

9400

2012.10.12

100.514

24800

2012.10.26

52.38

4500

相关函数: week