postgresql에서 random 함수를 쓰면서 generate_series 함수를 썼습니다. 오늘 이 함수에 대해서 조금 더 자세히 알아보도록 하겠습니다.

 


 먼저, 숫자형에 대해서는, 이렇게 2가지 인자를 줄 수 있습니다. 이 때에는 step이 1입니다. 1씩 증가한다는 의미입니다. start가 1이고, end가 10인데요. 1부터 10까지 순서대로 결과에 나타납니다.

 

 

 1부터 10까지 출력됨을 볼 수 있어요. 그런데 4씩 증가하게 할 수 없을까요?

 

 

 3번째 인자로 4를 주면 됩니다. start가 1이고, end가 10, step이 4이므로, 1, 5, 9만 출력됩니다. 9 다음에 13인데요. 13은 10보다 크기 때문에, 출력되지 않습니다.

 

 

 결과를 보면 1, 5, 9만 나왔음을 알 수 있습니다.

 

 

 반대로, 감소하는 순으로 찍을 수는 없을까요? step에 음수값을 주면 됩니다. start가 5이고, end가 2, step 값이 -2이므로, 5, 3, 1, ... 순으로 출력이 될 텐데요. 이 때, 1은 2보다 작으므로, 1부터는 출력되지 않습니다.

 

 결과는 위와 같습니다. start, stop, step 이렇게 3개만 알아도 쓰는 데 큰 문제가 없습니다.

 


 그런데, timestamp 값에 대해서도 generate_series 함수를 쓸 수 있습니다. 한 번 써 보겠습니다. 2022-01-01부터, 2022-07-23까지 7일 간격으로 출력을 해 봅시다.

 

 

 어떻게 하면 될까요? start 값을 2022-01-01로 주고, end 값을 2022-07-23으로 주면 됩니다. 다음에, step을 7 days로 주면 됩니다.

 

 

 그러면 7월 23일까지 잘 출력되었음을 볼 수 있습니다. 그런데, YYYY-MM-DD 꼴로 출력하고 싶습니다.

 

 

 그럴려면 date 함수를 써 주시면 됩니다.

 

 

 깔끔하게 YYYY-MM-DD 꼴로 출력됩니다. generate_series 함수는 이 정도만 아셔도 그리 큰 문제는 없을 듯 합니다.