Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Snowflake cloud data platform 当前时间戳()精度?_Snowflake Cloud Data Platform - Fatal编程技术网

Snowflake cloud data platform 当前时间戳()精度?

Snowflake cloud data platform 当前时间戳()精度?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,文档中说我们可以指定0(秒)到9(纳秒)的精度 然而,它似乎默认为毫秒,无论我做什么 SELECT CURRENT_TIMESTAMP() AS CT0a ,to_varchar(CT0a, 'yyyy-mm-dd hh24:mi:ss.FF9') AS CT0b ,CURRENT_TIMESTAMP(1) AS CT1a ,to_varchar(CT1a, 'yyyy-mm-dd hh24:mi:ss.FF9') AS CT1b ,CURRENT_TIMESTAMP(9)

文档中说我们可以指定0(秒)到9(纳秒)的精度

然而,它似乎默认为毫秒,无论我做什么

SELECT 
  CURRENT_TIMESTAMP() AS CT0a
  ,to_varchar(CT0a, 'yyyy-mm-dd hh24:mi:ss.FF9') AS CT0b
  ,CURRENT_TIMESTAMP(1) AS CT1a
  ,to_varchar(CT1a, 'yyyy-mm-dd hh24:mi:ss.FF9') AS CT1b
  ,CURRENT_TIMESTAMP(9) AS CT9a
  ,to_varchar(CT9a, 'yyyy-mm-dd hh24:mi:ss.FF9') AS CT9b
  ;
如果我用足够的小数显示它,它似乎返回相同的东西,总是毫秒

CT0A 2020-04-08 23:37:56.667 +0000  
CT0B 2020-04-08 23:37:56.667000000  
CT1A 2020-04-08 23:37:56.600 +0000  
CT1B 2020-04-08 23:37:56.667000000  
CT9A 2020-04-08 23:37:56.667 +0000  
CT9B 2020-04-08 23:37:56.667000000
CT0a、CT1a和CT2a以适当的小数位数显示,但CT0b、CT1b和CT9b都在同一时间显示,最多可显示3个小数


我错过了什么明显的东西吗

虽然雪花时间戳数据类型支持高达9位的精度,但当前的\u时间戳函数不支持。任何超过毫秒的都将是时钟的错误精度,因此不会报告

有效值的范围为0-9。但是,大多数平台不支持 真纳秒精度;您得到的精度可能会更低 比您指定的精度高。在实践中,精度通常很高 最多约为毫秒(3位数)

如果未指定输出格式,雪花将以小数点后三位的形式显示数秒,即使内部精度更高:

select to_timestamp(15863566077839811234, 9); -- Seconds has 9 digit precision, but displays 3
select to_varchar(to_timestamp(15863566077839811234, 9), 'yyyy-mm-dd hh24:mi:ss.FF9'); -- Displays all 9 digit precision

虽然雪花时间戳数据类型支持高达9位的精度,但当前的_时间戳函数不支持。任何超过毫秒的都将是时钟的错误精度,因此不会报告

有效值的范围为0-9。但是,大多数平台不支持 真纳秒精度;您得到的精度可能会更低 比您指定的精度高。在实践中,精度通常很高 最多约为毫秒(3位数)

如果未指定输出格式,雪花将以小数点后三位的形式显示数秒,即使内部精度更高:

select to_timestamp(15863566077839811234, 9); -- Seconds has 9 digit precision, but displays 3
select to_varchar(to_timestamp(15863566077839811234, 9), 'yyyy-mm-dd hh24:mi:ss.FF9'); -- Displays all 9 digit precision

是的,但是当我要求第二精度时,我仍然得到毫秒?这与底层平台无关?选择CURRENT_TIMESTAMP(1)作为CT1a,以_varchar(CURRENT_TIMESTAMP(1),'yyyy-mm-dd-hh24:mi:ss.FF9');返回2020-04-08 07:24:49.352000000。。。为什么是.352???如果不指定格式,即使精度在内部设置不同,Snowflake也会以秒为单位显示三位小数。例如:选择to_timestamp(158635666077839811234,9);--秒的精度为9位,但显示3个select to_varchar(to_时间戳(158635666077839811234,9),“yyy-mm-dd-hh24:mi:ss.FF9”);--显示所有9位精度。(为了便于阅读,在答案中添加了此示例)。这不是我的问题。如果我请求一个精确到十分之一秒的时间戳,我不希望收到第一百毫秒。因此,在我前面的示例中,我希望收到2020-04-08 07:24:49.300000000(或2020-04-08 07:24:49.400000000),然后在显示时,我应该得到2020-04-08 07:24:49.300。但这不是我观察到的,但当我要求第二精度时,我仍然得到毫秒?这与底层平台无关?选择CURRENT_TIMESTAMP(1)作为CT1a,以_varchar(CURRENT_TIMESTAMP(1),'yyyy-mm-dd-hh24:mi:ss.FF9');返回2020-04-08 07:24:49.352000000。。。为什么是.352???如果不指定格式,即使精度在内部设置不同,Snowflake也会以秒为单位显示三位小数。例如:选择to_timestamp(158635666077839811234,9);--秒的精度为9位,但显示3个select to_varchar(to_时间戳(158635666077839811234,9),“yyy-mm-dd-hh24:mi:ss.FF9”);--显示所有9位精度。(为了便于阅读,在答案中添加了此示例)。这不是我的问题。如果我请求一个精确到十分之一秒的时间戳,我不希望收到第一百毫秒。因此,在我前面的示例中,我希望收到2020-04-08 07:24:49.300000000(或2020-04-08 07:24:49.400000000),然后在显示时,我应该得到2020-04-08 07:24:49.300。但这不是我观察到的