当前位置: 首页 > 知识库问答 >
问题:

雪花中时间戳转换错误

凌修伟
2023-03-14
CREATE OR REPLACE PROCEDURE test_sp()
  RETURNS string
  LANGUAGE javascript
  EXECUTE AS CALLER
  AS
  $$  
  
    var result = "";  
    snowflake.execute( {sqlText: "BEGIN TRANSACTION;"} );  
    

    try {   
  
        var max_sync_sql_command = `SELECT watermark_value,dateadd(minute, -1, sysdate()) as new_watermark_value  
                                        from APPLICATION_CONTROL 
                                    WHERE TABLE_NAME = 'TEST1'; `
        
        var max_sync_time_result = snowflake.execute ({ sqlText: max_sync_sql_command });
        
        max_sync_time_result.next();            
        var max_sync_time = max_sync_time_result.getColumnValue(1);  
        var new_watermark_value = (max_sync_time_result.getColumnValue(2));  
 
        /*Some ETL Code Here*/ 

        var update_watermark_sql_command = `update APPLICATION_CONTROL  
                                            set watermark_value =  to_varchar(  to_timestamp( '`+new_watermark_value+`', 'DY MON DD HH24:MI:SS TZD YYYY') , 'YYYY-MM-DD HH24:MI:SS')
                                            WHERE TABLE_NAME = 'TEST1'; `

        snowflake.execute ({ sqlText: update_watermark_sql_command });
        
        snowflake.execute( {sqlText: "COMMIT;"} );
        result = "Record updated Successfully"
        }
        catch (err)  
        {
        snowflake.execute( {sqlText: "ROLLBACK;"} );
        result =  "Failed: Code: " + err.code + "\n  State: " + err.state;
        result += "\n  Message: " + err.message;
        result += "\nStack Trace:\n" + err.stackTraceTxt;
        }
  
    return result;    
  
  $$;
Failed: Code: 100183
  State: P0000
  Message: Can't parse 'Fri Jun 11 2021 12:47:38 GMT-0700 (Pacific Daylight Time)' as timestamp with format 'DY MON DD YYYY HH24:MI:SS TZD'
Stack Trace:
At Snowflake.execute, line 25 position 12

共有1个答案

狄溪叠
2023-03-14

从查询中获取结果时,列的顺序错误

var max_sync_time = max_sync_time_result.getColumnValue(1);  
var new_watermark_value = (max_sync_time_result.getColumnValue(2)); 

应该是

var max_sync_time = max_sync_time_result.getColumnValue(2);  
var new_watermark_value = (max_sync_time_result.getColumnValue(1)); 

更新

var update_watermark_sql_command = `update APPLICATION_CONTROL  
                                    set watermark_value =  :1 
                                    WHERE TABLE_NAME = 'TEST1'; `

snowflake.execute ({ sqlText: update_watermark_sql_command, binds: [new_watermark_value.toISOString()] });
 类似资料:
  • 下面的代码给出了2021年8月6日星期五12:16:27 GMT-0700(太平洋夏时制)的值,而不是mm/dd/yyyy hh:mm:ss。我在这里漏掉了什么?请告知

  • 我在雪花中有一个字符串值如下;

  • 我找不到这个问题的解决方案,我正在从firebase获取数据,其中一个字段是时间戳,看起来像这样- Swift示例(作品): 我的飞镖尝试: 并且它返回的日期/时间是错误的。 更新:

  • 我试图使用字符串到时间戳的转换,从一般情况下提取对象向量。在本例中,mysql值的格式如下:“2022-06-29 10:08:22”,但当我打印字符串时,它的格式如下:“2022-06-29T10:08:22”。这里,我们注意到输出包括一个“T”字符。当我尝试使用时间戳进行转换时,我得到了一个错误。 代码: 在本例中,是一个过时的java类。sql。时间戳?。或者我错在哪里? 注意:Ojbect

  • 本教程的重点是将来自 Yahoo finance API 的日期转换为 Matplotlib 可理解的日期。 为了实现它,我们要写一个新的函数,bytespdate2num。 def bytespdate2num(fmt, encoding='utf-8'): strconverter = mdates.strpdate2num(fmt) def bytesconverter(b)

  • 问题内容: 我有一个毫秒本地本地时间戳,我想将其转换为毫秒本地UTC时间戳。快速浏览一下文档,看起来像这样工作: 有一个更好的方法吗? 问题答案: 使用a 来获取本地纪元处的偏移量,然后将其添加到本地纪元时间戳中。