API de procedimentos armazenados em JavaScript

Este tópico abrange a API JavaScript para procedimentos armazenados do Snowflake. A API consiste em objetos JavaScript e os métodos nesses objetos.

Neste tópico:

Objeto: snowflake

O objeto snowflake pode ser acessado por padrão pelo código JavaScript em um procedimento armazenado; não é necessário criar o objeto. Esse objeto contém os métodos na API do procedimento armazenado. Por exemplo:

create procedure stproc1()
  returns string not null
  language javascript
  as
  -- "$$" is the delimiter for the beginning and end of the stored procedure.
  $$
  // The "snowflake" object is provided automatically in each stored procedure.
  // You don't need to create it.
  //         |||||||||
  //         vvvvvvvvv
  var statement = snowflake.createStatement(...);
  ...
  $$
  ;
Copy

Exemplos de códigos mais extensos são fornecidos em Como trabalhar com procedimentos armazenados.

Constantes

Nenhum.

Métodos

addEvent(name[, attributes])

Adiciona um evento para rastreamento.

Para obter mais informações sobre eventos de rastreamento com JavaScript, consulte Emissão de eventos de rastreamento em JavaScript

Parâmetros

name

O nome do evento a ser adicionado.

attributes

Um objeto que especifica os atributos a serem associados ao evento.

Erros

Lança um erro JavaScript se:

  • name não é uma cadeia de caracteres.

  • Há zero ou mais de dois argumentos.

Exemplos

Adicione um evento my_event com atributos score e pass.

snowflake.addEvent('my_event', {'score': 89, 'pass': true});
Copy
createStatement(sql_command_object)

Cria um objeto Statement e o retorna. O método execute() para o objeto pode ser executado depois.

Parâmetro(s)

sql_command_object

O parâmetro de entrada é um objeto JSON (dicionário) que contém o texto da instrução a ser executada e os valores que devem ser vinculados a essa instrução.

Retornos

Um objeto Statement.

Erros

Lança um erro JavaScript se:

Exemplos

Este exemplo não vincula valores:

var stmt = snowflake.createStatement(
   {sqlText: "INSERT INTO table1 (col1) VALUES (1);"}
   );
Copy

Este exemplo vincula valores:

var stmt = snowflake.createStatement(
   {
   sqlText: "INSERT INTO table2 (col1, col2) VALUES (?, ?);",
   binds:["LiteralValue1", variable2]
   }
);
Copy

Para obter mais informações sobre vinculações, incluindo exemplos adicionais, consulte Variáveis de vinculação.

execute(command)

Execute um comando SQL.

Parâmetros

A entrada é a mesma que para o método createStatement().

Retornos

Um resultado definido sob a forma de um objeto ResultSet.

Erros

Lança um erro JavaScript se:

  • Um erro, como um erro de compilação, ocorreu durante a execução da consulta.

  • sqlText estiver faltando ou contiver um texto de consulta vazio.

  • A instrução tentar vincular um argumento cujo tipo de dados não é aceito. Para obter mais informações sobre o mapeamento do tipo de dados, consulte Mapeamentos de tipos de dados SQL e JavaScript. Para obter mais informações sobre vinculações, incluindo exemplos adicionais, consulte Variáveis de vinculação.

Nota

Este método execute() (por exemplo, snowflake.execute()) não é exatamente o mesmo que o método no objeto Statement (por exemplo, Statement.execute()).

log(level, message)

Registra uma mensagem no nível de gravidade especificado.

Parâmetros

level

O nível de gravidade no qual a mensagem deve ser registrada. Você pode especificar uma das seguintes cadeias de caracteres:

  • 'off'

  • 'trace'

  • 'debug'

  • 'info'

  • 'warn'

  • 'error'

  • 'fatal'

message

A mensagem a ser registrada.

Erros

Lança um erro JavaScript se:

  • level não é uma cadeia de caracteres.

  • level não é um dos valores level suportados listados acima.

Exemplos
snowflake.log("error", "Error message");
Copy
setSpanAttribute(key, value)

Define um atributo para o span atual ao rastrear eventos.

Para obter mais informações sobre eventos de rastreamento com JavaScript, consulte Emissão de eventos de rastreamento em JavaScript

Parâmetros

key

A chave do atributo.

value

O valor do atributo.

Erros

Lança um erro JavaScript se:

  • Dois argumentos não são especificados.

  • key não é uma cadeia de caracteres.

Exemplos

Define um atributo cuja chave seja example.boolean e cujo valor seja true.

snowflake.setSpanAttribute("example.boolean", true);
Copy

Objeto: Statement

Um objeto de procedimento armazenado Statement fornece os métodos para executar uma instrução de consulta e acessar metadados (como tipos de dados em coluna) sobre a instrução.

No momento em que o objeto Statement é criado, o SQL é analisado, e uma instrução preparada é criada.

Constantes

Nenhum.

Métodos

execute()

Este método executa a instrução preparada armazenada nesse objeto Statement.

Parâmetros

Nenhum porque o método utiliza informações que já estão armazenadas no objeto Statement.

Retornos

Um resultado definido sob a forma de um objeto ResultSet.

Erros

Lança um erro JavaScript se a consulta falhar.

Exemplos

Consulte Como trabalhar com procedimentos armazenados.

Nota

Este método execute() (por exemplo, Statement.execute()) não é exatamente o mesmo que o método no objeto snowflake (por exemplo, snowflake.execute()).

snowflake.execute(statement_in_JSON_form) requer um parâmetro, que é a instrução SQL a ser executada. Statement.execute() não toma um parâmetro; ele usa a instrução SQL que foi especificada no momento em que o objeto Statement foi criado.

getColumnCount()

Este método retorna o número de colunas no conjunto de resultados para uma consulta executada. Se a consulta ainda não tiver sido executada, este método lança um erro.

Parâmetros

Nenhum.

Retornos

O número de colunas.

Erros

Lança um erro JavaScript se a instrução ainda não tiver sido executada (e, portanto, o número de colunas retornadas não pode necessariamente ser determinado).

Exemplos
var column_count = statement.getColumnCount();
Copy
getColumnName(colIdx)

Este método retorna o nome da coluna especificada.

Parâmetros

O número de índice da coluna (a partir de 1, não 0).

Retornos

O nome da coluna.

Erros

Lança um erro JavaScript se:

  • A Statement ainda não foi executada.

  • Não existe coluna com o índice especificado.

getColumnScale(colIdx)

Este método retorna a escala da coluna especificada. A escala é o número de dígitos após a vírgula decimal. A escala da coluna foi especificada na instrução CREATE TABLE ou ALTER TABLE. Por exemplo:

create table scale_example  (
    n10_4 numeric(10, 4)    // Precision is 10, Scale is 4.
    );
Copy

Embora este método possa ser chamado para qualquer tipo de dados, ele se destina ao uso com tipos de dados numéricos.

Parâmetros

O índice da coluna para a qual você quer a escala (a partir de 1, não 0).

Retornos

A escala da coluna (para colunas numéricas); 0 para não numéricas (colunas).

Erros

Lança um erro JavaScript se:

  • A Statement ainda não foi executada.

  • Não existe coluna com o índice especificado.

Exemplos

Consulte Como trabalhar com procedimentos armazenados (busque getColumnScale()).

getColumnSqlType(colIdx|colName)

Este método retorna o tipo de dados SQL da coluna especificada.

Parâmetros

O número de índice da coluna (a partir de 1, e não 0) ou o nome da coluna. (O método é sobrecarregado para aceitar diferentes tipos de dados como parâmetros).

O nome da coluna deve ser todo em letras maiúsculas, a menos que, quando a tabela foi criada, tenham sido usadas aspas duplas no nome da coluna (ou seja, as letras minúsculas/maiúsculas do nome da coluna foram preservadas).

Retornos

O tipo de dados SQL da coluna.

Erros

Lança um erro JavaScript se:

  • A Statement ainda não foi executada.

  • Não existe coluna com o nome ou índice especificado.

getColumnType(colIdx|colName)

Este método retorna o tipo de dados JavaScript da coluna especificada.

Parâmetros

O número de índice da coluna (a partir de 1, e não 0) ou o nome da coluna. (O método é sobrecarregado para aceitar diferentes tipos de dados como parâmetros).

O nome da coluna deve ser todo em letras maiúsculas, a menos que, quando a tabela foi criada, tenham sido usadas aspas duplas no nome da coluna (ou seja, as letras minúsculas/maiúsculas do nome da coluna foram preservadas).

Retornos

O tipo de dados JavaScript da coluna.

Erros

Lança um erro JavaScript se:

  • A Statement ainda não foi executada.

  • Não existe coluna com o índice ou nome especificado.

getNumDuplicateRowsUpdated()

Este método retorna o número de linhas “duplicadas” (muitas vezes chamadas de linhas de junção múltipla) atualizadas por este Statement. (Para obter mais informações sobre como são formadas as linhas de junção múltipla, consulte as Notas de uso e exemplos para a instrução UPDATE).

Parâmetros

Nenhum.

Retornos

Um valor do tipo Número que indica o número de linhas de junção múltipla atualizadas.

Erros

Lança um erro JavaScript se a instrução ainda não tiver sido executada.

getNumRowsAffected()

Este método retorna o número de linhas afetadas (por exemplo, inseridas/atualizadas/excluídas) por este Statement.

Se mais de um tipo de alteração se aplicar (por exemplo, uma operação MERGE inseriu algumas linhas e atualizou outras), então o número é o número total de linhas afetadas por todas as alterações.

Parâmetros

Nenhum.

Retornos

Um valor do tipo Número que indica o número de linhas afetadas.

Erros

Lança um erro JavaScript se a instrução ainda não tiver sido executada.

getNumRowsDeleted()

Este método retorna o número de linhas excluídas por este Statement.

Parâmetros

Nenhum.

Retornos

Um valor do tipo Número que indica o número de linhas excluídas.

Erros

Lança um erro JavaScript se a instrução ainda não tiver sido executada.

getNumRowsInserted()

Este método retorna o número de linhas inseridas por este Statement.

Parâmetros

Nenhum.

Retornos

Um valor do tipo Número que indica o número de linhas inseridas.

Erros

Lança um erro JavaScript se a instrução ainda não tiver sido executada.

getNumRowsUpdated()

Este método retorna o número de linhas atualizadas por este Statement.

Parâmetros

Nenhum.

Retornos

Um valor do tipo Número que indica o número de linhas atualizadas.

Erros

Lança um erro JavaScript se a instrução ainda não tiver sido executada.

getRowCount()

Este método retorna o número de linhas no conjunto de resultados para uma consulta executada. Se a consulta ainda não tiver sido executada, este método lança um erro.

Parâmetros

Nenhum.

Retornos

O número de linhas.

Erros

Lança um erro JavaScript se a instrução ainda não tiver sido executada (e, portanto, o número de linhas retornadas não pode ser determinado).

Exemplos
var row_count = statement.getRowCount();
Copy
getQueryId()

Este método retorna o UUID da consulta mais recente executada.

Parâmetros

Nenhum.

Retornos

Uma cadeia de caracteres contendo um UUID, que é a ID da consulta.

Erros

Se nenhuma consulta foi executada ainda por esta instrução, o método lança o erro “Statement is not executed yet” (Instrução ainda não executada).

Exemplos
var queryId = statement.getQueryId();
Copy
getSqlText()

Este método retorna o texto da consulta preparada no objeto Statement.

Parâmetros

Nenhum.

Retornos

Uma cadeia de caracteres do texto da consulta preparada.

Erros

Nenhum.

Exemplos
var queryText = statement.getSqlText();
Copy
isColumnNullable(colIdx)

Este método retorna se a coluna especificada permite valores SQL NULL.

Parâmetros

O índice da coluna (a partir de 1, não 0).

Retornos

true se a coluna permitir valores SQL NULL; caso contrário, false.

Erros

Lança um erro JavaScript se:

  • A Statement ainda não foi executada.

  • Não existe coluna com o índice especificado.

isColumnText(colIdx)

Este método retorna true se o tipo de dados da coluna for um dos seguintes tipos de dados de texto SQL:

  • CHAR ou CHAR(N), assim como seus sinônimos CHARACTER e CHARACTER(N)

  • VARCHAR ou VARCHAR(N)

  • STRING

  • TEXT

Caso contrário, ele retorna false.

Parâmetros

O índice da coluna (a partir de 1, não 0).

Retornos

true se o tipo de dados da coluna for um dos tipos de dados de texto SQL; false para todos os outros tipos de dados.

Erros

Lança um erro JavaScript se:

  • A Statement ainda não foi executada.

  • Não existe coluna com o índice especificado.

Nota

A API fornece vários métodos para determinar o tipo de dados de uma coluna. O primeiro método é descrito em detalhes acima. Os demais métodos têm os mesmos parâmetros e erros; a única diferença é o valor de retorno.

isColumnArray(colIdx)
Retornos

true se o tipo de dados da coluna for ARRAY (para dados semiestruturados); false para todos os outros tipos de dados.

isColumnBinary(colIdx)
Retornos

true se o tipo de dados da coluna for BINARY ou VARBINARY; false para todos os outros tipos de dados.

isColumnBoolean(colIdx)
Retornos

true se o tipo de dados da coluna for BOOLEAN; false para todos os outros tipos de dados.

isColumnDate(colIdx)
Retornos

true se o tipo de dados da coluna for DATE; false para todos os outros tipos de dados.

isColumnNumber(colIdx)
Retornos

true se o tipo de dados da coluna for um dos tipos numéricos SQL (NUMBER, NUMERIC, DECIMAL, INT, INTEGER, BIGINT, SMALLINT, TINYINT, BYTEINT, FLOAT, FLOAT4, FLOAT8, DOUBLE, DOUBLE PRECISION ou REAL); false para todos os outros tipos de dados.

isColumnObject(colIdx)
Retornos

true se o tipo de dados da coluna for OBJECT (para dados semiestruturados); false para todos os outros tipos de dados.

isColumnTime(colIdx)
Retornos

true se o tipo de dados da coluna for TIME ou DATETIME; false para todos os outros tipos de dados.

isColumnTimestamp(colIdx)
Retornos

true se o tipo de dados da coluna for um dos tipos de carimbo de data/hora SQL (TIMESTAMP, TIMESTAMP_LTZ, TIMESTAMP_NTZ ou TIMESTAMP_TZ); false para todos os outros tipos de dados, incluindo outros tipos de dados de data e hora (DATE, TIME ou DATETIME).

isColumnVariant(colIdx)
Retornos

true se o tipo de dados da coluna for VARIANT (para dados semiestruturados); false para todos os outros tipos de dados.

Objeto: ResultSet

Este objeto contém os resultados retornados por uma consulta. Os resultados são tratados como um conjunto de zero ou mais linhas, cada uma das quais contendo uma ou mais colunas. O termo “set” (conjunto) não é usado aqui no sentido matemático. Na matemática, um conjunto é desordenado, enquanto um ResultSet tem uma ordem.

Um ResultSet é semelhante, em alguns aspectos, ao conceito de um cursor SQL. Por exemplo, você pode ver uma linha de cada vez em um ResultSet, assim como você pode ver uma linha de cada vez em um cursor.

Normalmente, depois de recuperar um ResultSet, você itera através dele repetindo as seguintes operações:

  • Chamar next() para obter a próxima linha.

  • Recuperar dados da linha atual usando métodos de chamada, como getColumnValue().

Se você não souber o suficiente sobre os dados no ResultSet (por exemplo, você não sabe o tipo de dados de cada coluna), então você pode chamar outros métodos que forneçam informações sobre os dados.

Alguns dos métodos do objeto ResultSet são similares aos métodos do objeto Statement. Por exemplo, ambos os objetos têm um método getColumnSqlType(colIdx).

Constantes

Nenhum.

Métodos

getColumnCount()

Este método retorna o número de colunas nesse ResultSet.

Parâmetros

Nenhum.

Retornos

Um valor do tipo Número que indica o número de colunas.

Erros

Nenhum.

getColumnSqlType(colIdx|colName)

Este método retorna o tipo de dados SQL da coluna especificada.

Parâmetros

O número de índice da coluna (a partir de 1, e não 0) ou o nome da coluna. (O método é sobrecarregado para aceitar diferentes tipos de dados como parâmetros).

O nome da coluna deve ser todo em letras maiúsculas, a menos que, quando a tabela foi criada, tenham sido usadas aspas duplas no nome da coluna (ou seja, as letras minúsculas/maiúsculas do nome da coluna foram preservadas).

Retornos

O tipo de dados SQL da coluna.

Erros

Lança um erro JavaScript se:

  • ResultSet está vazio ou next() ainda não foi chamado.

  • Não existe coluna com o índice ou nome especificado.

getColumnValue(colIdx|colName)

Este método retorna o valor de uma coluna na linha atual (ou seja, a linha obtida mais recentemente por next()).

Parâmetros

O número de índice da coluna (a partir de 1, e não 0) ou o nome da coluna. (O método é sobrecarregado para aceitar diferentes tipos de dados como parâmetros).

O nome da coluna deve ser todo em letras maiúsculas, a menos que, quando a tabela foi criada, tenham sido usadas aspas duplas no nome da coluna (ou seja, as letras minúsculas/maiúsculas do nome da coluna foram preservadas).

Retornos

O valor da coluna especificada.

Erros

Lança um erro JavaScript se:

  • ResultSet está vazio ou next() ainda não foi chamado.

  • Não existe coluna com o índice ou nome especificado.

Exemplos

Converter uma linha no banco de dados em uma matriz JavaScript:

var valueArray = [];
// For each row...
while (myResultSet.next())  {
    // Append each column of the current row...
    valueArray.push(myResultSet.getColumnValue('MY_COLUMN_NAME1'));
    valueArray.push(myResultSet.getColumnValue('MY_COLUMN_NAME2'));
    ...
    // Do something with the row of data that we retrieved.
    f(valueArray);
    // Reset the array before getting the next row.
    valueArray = [];
    }
Copy

Além disso, o valor de uma coluna pode ser acessado como propriedade do objeto ResultSet (por exemplo, myResultSet.MY_COLUMN_NAME).

var valueArray = [];
// For each row...
while (myResultSet.next())  {
    // Append each column of the current row...
    valueArray.push(myResultSet.MY_COLUMN_NAME1);
    valueArray.push(myResultSet.MY_COLUMN_NAME2);
    ...
    // Do something with the row of data that we retrieved.
    f(valueArray);
    // Reset the array before getting the next row.
    valueArray = [];
    }
Copy

Nota

Lembre-se de que, a menos que o nome da coluna tenha sido delimitado com aspas duplas na instrução CREATE TABLE, o nome da coluna deve ser todo em maiúsculas no código JavaScript.

getColumnValueAsString(colIdx|colName)

Este método retorna o valor de uma coluna como uma cadeia de caracteres, o que é útil quando você precisa de um valor de coluna independentemente do tipo de dados original na tabela.

O método é idêntico ao método getColumnValue(), exceto que ele retorna um valor de cadeia de caracteres.

Para obter mais detalhes, consulte getColumnValue().

getNumRowsAffected()

Este método retorna o número de linhas afetadas (por exemplo, inseridas/atualizadas/excluídas) pelo Statement que gerou este ResultSet.

Se mais de um tipo de alteração se aplicar (por exemplo, uma operação MERGE inseriu algumas linhas e atualizou outras), então o número é o número total de linhas afetadas por todas as alterações.

Parâmetros

Nenhum.

Retornos

Um valor do tipo Número que indica o número de linhas afetadas.

Erros

Nenhum.

getQueryId()

Este método retorna o UUID da consulta mais recente executada.

Parâmetros

Nenhum.

Retornos

Uma cadeia de caracteres contendo um UUID, que é a ID da consulta.

Exemplos
var queryId = resultSet.getQueryId();
Copy
getRowCount()

Este método retorna o número de linhas neste ResultSet. (Este é o número total de linhas, não o número de linhas que ainda não foram consumidas).

Parâmetros

Nenhum.

Retornos

Um valor do tipo Número que indica o número de linhas.

Erros

Nenhum.

next()

Este método obtém a próxima linha no ResultSet e a disponibiliza para acesso.

Este método não devolve a nova linha de dados. Em vez disso, ele disponibiliza a linha para que você possa chamar métodos como ResultSet.getColumnValue() para recuperar os dados.

Observe que você deve chamar next() para cada linha do conjunto de resultados, incluindo a primeira linha.

Parâmetros

Nenhum.

Retornos

true se ele recuperou uma linha e false se não há mais linhas para recuperar.

Assim, você pode iterar através de ResultSet até next() retornar false.

Erros

Nenhum.

Objeto: SfDate

JavaScript não tem um tipo de dados nativo que corresponda aos tipos de dados SQL do Snowflake TIMESTAMP_LTZ, TIMESTAMP_NTZ e TIMESTAMP_TZ. Quando você recuperar um valor do tipo TIMESTAMP do banco de dados e quiser armazená-lo como uma variável JavaScript (por exemplo, copiar o valor de um ResultSet para uma variável JavaScript), use o tipo de dados JavaScript definido pelo Snowflake SfDate. O tipo de dados SfDate (“SnowFlake Date”) é uma extensão do tipo de dados JavaScript de data. SfDate tem métodos extras, que estão documentados abaixo.

Constantes

Nenhum.

Métodos

A menos que especificado de outra forma, os exemplos abaixo consideram o fuso horário UTC.

getEpochSeconds()

Este método retorna o número de segundos desde o início da “época” (meia-noite de 1.º de janeiro de 1970).

Parâmetros

Nenhum.

Retornos

O número de segundos entre a meia-noite de 1.º de janeiro de 1970 e o carimbo de data/hora armazenado na variável.

Exemplos

Crie o procedimento armazenado:

CREATE OR REPLACE PROCEDURE test_get_epoch_seconds(TSV VARCHAR)
    RETURNS FLOAT
    LANGUAGE JAVASCRIPT
    AS
    $$
    var sql_command = "SELECT '" + TSV + "'::TIMESTAMP_NTZ;";
    var stmt = snowflake.createStatement( {sqlText: sql_command} );
    var resultSet = stmt.execute();
    resultSet.next();
    var my_sfDate = resultSet.getColumnValue(1);
    return my_sfDate.getEpochSeconds();
    $$
    ;
Copy

Passe ao procedimento diferentes carimbos de data/hora e recupere o número de segundos desde a época para cada carimbo de data/hora.

CALL test_get_epoch_seconds('1970-01-01 00:00:00.000000000');
+------------------------+
| TEST_GET_EPOCH_SECONDS |
|------------------------|
|                      0 |
+------------------------+
Copy
CALL test_get_epoch_seconds('1970-01-01 00:00:01.987654321');
+------------------------+
| TEST_GET_EPOCH_SECONDS |
|------------------------|
|                      1 |
+------------------------+
Copy
CALL test_get_epoch_seconds('1971-01-01 00:00:00');
+------------------------+
| TEST_GET_EPOCH_SECONDS |
|------------------------|
|               31536000 |
+------------------------+
Copy
getNanoSeconds()

Este método retorna o valor do campo de nanossegundos do objeto. Note que estes são apenas os segundos fracionários, não os nanossegundos desde o início da época. Assim, o valor está sempre entre 0 e 999999999.

Parâmetros

Nenhum.

Retornos

O número de nanossegundos.

Exemplos

Crie o procedimento armazenado:

CREATE OR REPLACE PROCEDURE test_get_nano_seconds2(TSV VARCHAR)
    RETURNS FLOAT
    LANGUAGE JAVASCRIPT
    AS
    $$
    var sql_command = "SELECT '" + TSV + "'::TIMESTAMP_NTZ;";
    var stmt = snowflake.createStatement( {sqlText: sql_command} );
    var resultSet = stmt.execute();
    resultSet.next();
    var my_sfDate = resultSet.getColumnValue(1);
    return my_sfDate.getNanoSeconds();
    $$
    ;
-- Should be 0 nanoseconds.
-- (> SNIPPET_TAG=query_03_01
CALL test_get_nano_seconds2('1970-01-01 00:00:00.000000000');
Copy

Passe ao procedimento diferentes carimbos de data/hora e recupere o número de nanossegundos de cada um.

CALL test_get_nano_seconds2('1970-01-01 00:00:00.000000000');
+------------------------+
| TEST_GET_NANO_SECONDS2 |
|------------------------|
|                      0 |
+------------------------+
Copy
CALL test_get_nano_seconds2('1970-01-01 00:00:01.987654321');
+------------------------+
| TEST_GET_NANO_SECONDS2 |
|------------------------|
|              987654321 |
+------------------------+
Copy
CALL test_get_nano_seconds2('1971-01-01 00:00:00.000123456');
+------------------------+
| TEST_GET_NANO_SECONDS2 |
|------------------------|
|                 123456 |
+------------------------+
Copy
getScale()

Este método retorna a precisão do tipo de dados, ou seja, o número de dígitos após a vírgula decimal. Por exemplo, a precisão de TIMESTAMP_NTZ(3) é 3 (milissegundos). A precisão de TIMESTAMP_NTZ(0) é 0 (sem frações de segundos). A precisão de TIMSTAMP_NTZ é 9 (nanossegundos).

O mínimo é 0. O máximo é 9 (a precisão é de 1 nanossegundo). A precisão padrão é 9.

Parâmetros

Nenhum.

Retornos

O número de dígitos após a casa decimal (número de dígitos no campo de segundos fracionários).

Exemplos

Crie o procedimento armazenado:

CREATE OR REPLACE PROCEDURE test_get_scale(TSV VARCHAR, SCALE VARCHAR)
    RETURNS FLOAT
    LANGUAGE JAVASCRIPT
    AS
    $$
    var sql_command = "SELECT '" + TSV + "'::TIMESTAMP_NTZ(" + SCALE + ");";
    var stmt = snowflake.createStatement( {sqlText: sql_command} );
    var resultSet = stmt.execute();
    resultSet.next();
    var my_sfDate = resultSet.getColumnValue(1);
    return my_sfDate.getScale();
    $$
    ;

-- Should be 0.
-- (> SNIPPET_TAG=query_04_01
CALL test_get_scale('1970-01-01 00:00:00', '0');
Copy

Neste exemplo, o carimbo de data/hora é definido como TIMESTAMP_NTZ(0), portanto a precisão é 0.

CALL test_get_scale('1970-01-01 00:00:00', '0');
+----------------+
| TEST_GET_SCALE |
|----------------|
|              0 |
+----------------+
Copy

Neste exemplo, o carimbo de data/hora é definido como TIMESTAMP_NTZ(2), portanto a precisão é 2.

CALL test_get_scale('1970-01-01 00:00:01.123', '2');
+----------------+
| TEST_GET_SCALE |
|----------------|
|              2 |
+----------------+
Copy

Neste exemplo, o carimbo de data/hora é definido como TIMESTAMP_NTZ, portanto a precisão é 9, que é o padrão.

CALL test_get_scale('1971-01-01 00:00:00.000123456', '9');
+----------------+
| TEST_GET_SCALE |
|----------------|
|              9 |
+----------------+
Copy
getTimezone()

Este método retorna o fuso horário como o número de minutos antes ou depois do UTC.

Parâmetros

Nenhum.

Retornos

O fuso horário como um número de minutos antes ou depois do UTC.

Exemplos

Crie o procedimento armazenado:

CREATE OR REPLACE PROCEDURE test_get_Timezone(TSV VARCHAR)
    RETURNS FLOAT
    LANGUAGE JAVASCRIPT
    AS
    $$
    var sql_command = "SELECT '" + TSV + "'::TIMESTAMP_TZ;";
    var stmt = snowflake.createStatement( {sqlText: sql_command} );
    var resultSet = stmt.execute();
    resultSet.next();
    var my_sfDate = resultSet.getColumnValue(1);
    return my_sfDate.getTimezone();
    $$
    ;
Copy

Neste exemplo, o fuso horário é 8 horas (480 minutos) atrás do UTC.

CALL test_get_timezone('1970-01-01 00:00:01-08:00');
+-------------------+
| TEST_GET_TIMEZONE |
|-------------------|
|              -480 |
+-------------------+
Copy

Neste exemplo, o fuso horário é 11 horas (660 minutos) à frente do UTC.

CALL test_get_timezone('1971-01-01 00:00:00.000123456+11:00');
+-------------------+
| TEST_GET_TIMEZONE |
|-------------------|
|               660 |
+-------------------+
Copy
toString()
Parâmetros

Nenhum.

Retornos

Este método retorna uma representação em cadeia de caracteres do carimbo de data/hora.

Exemplos

Isto mostra um exemplo simples de criação de um SfDate e chamada do seu método toString:

CREATE OR REPLACE PROCEDURE test_toString(TSV VARCHAR)
    RETURNS VARIANT
    LANGUAGE JAVASCRIPT
    AS
    $$
    var sql_command = "SELECT '" + TSV + "'::TIMESTAMP_TZ;";
    var stmt = snowflake.createStatement( {sqlText: sql_command} );
    var resultSet = stmt.execute();
    resultSet.next();
    var my_sfDate = resultSet.getColumnValue(1);
    return my_sfDate.toString();
    $$
    ;
Copy
CALL test_toString('1970-01-02 03:04:05');
+------------------------------------------------------------------+
| TEST_TOSTRING                                                    |
|------------------------------------------------------------------|
| "Fri Jan 02 1970 03:04:05 GMT+0000 (Coordinated Universal Time)" |
+------------------------------------------------------------------+
Copy