Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL将季度日期编号转换为字符串填充0作为小于10的数字的前缀_Sql_Vertica - Fatal编程技术网

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

SQL将季度日期编号转换为字符串填充0作为小于10的数字的前缀,sql,vertica,Sql,Vertica,我想将每月的_日期转换为季度,但我想用0来传递一位数字。 即。, 月日='2015-01-01' 在SQL查询中,我执行以下操作: 四分之一月日*3-2为varchar 但这给了我“1”而不是“01” 有没有办法让它给我'01'、'04'、'07'和'10'?我承认,这是一种蛮力方法,但我过去用过。 给定这4个变量,我可以计算带有填充0的StartCalendand Declare @StartDate date Declare @StartYear int Declare @StartMont

我想将每月的_日期转换为季度,但我想用0来传递一位数字。 即。, 月日='2015-01-01' 在SQL查询中,我执行以下操作: 四分之一月日*3-2为varchar 但这给了我“1”而不是“01”


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

我承认,这是一种蛮力方法,但我过去用过。 给定这4个变量,我可以计算带有填充0的StartCalendand

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))
)

你能有大于4的四分之一数字吗

无论如何。。。您可以按需要的方式填充数字。请确保检查SQL参考手册>SQL函数>格式化函数

例如:

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

是的,但这取决于您使用的SQL引擎可能与@juergend重复,谢谢。我使用的不是SQL Server实际上,它是我的一个SQL存储过程中的精确代码。这个想法是,给定一个日期,你可以用整数形式的填充零来表示日期;这是问题中标记的数据库。