SQL将季度日期编号转换为字符串填充0s作为数字的前缀< 10

时间:2016-04-21 18:26:33

标签: sql vertica

我想将monthly_dates转换为quarter,但我希望将0位数的单位数转换为。 即, monthly_date =' 2015-01-01' 在SQL查询中我做: QUARTER(monthly_date)* 3-2 AS varchar 但这给了我' 1'而不是' 01'

有没有办法让它给我' 01' 04',' 07'和' 10'?

2 个答案:

答案 0 :(得分:0)

你能有四分之一大于4的?

无论如何......你可以按照你想要的方式填充数字(请务必查看 SQL参考手册> SQL函数>格式化函数)。

例如:

SQL> select to_char( 4 , '09' ) ;
 to_char 
---------
   04
SQL> select to_char( 12 , '09' ) ;
 to_char 
---------
   12

答案 1 :(得分:-1)

我承认,这是一种蛮力方法,但我过去曾使用它。 给定这4个变量,我可以用填充的0&#39>来计算StartCalendarId

Declare @StartDate date
Declare @StartYear int
Declare @StartMonth int
Declare @StartDay int

Set @StartYear = Year(@StartDate)
Set @StartMonth = Month(@StartDate)
Set @StartDay = Day(@StartDate)

Set @StartCalendarId =
(CONVERT([int],
    (((CONVERT([varchar](4),@StartYear)+
    case when len(@StartMonth)=(1) then '0' else '' end)+
    CONVERT([varchar](2),@StartMonth))+
    case when len(@StartDay)=(1) then '0' else '' end)
    +CONVERT([varchar](2),@StartDay))
)