API de procédures stockées JavaScript¶
Cette rubrique couvre les API JavaScript pour les procédures stockées Snowflake. L’API est composée d’objets JavaScript et des méthodes qu’ils contiennent.
Dans ce chapitre :
Objet : snowflake
¶
L’objet snowflake
est accessible par défaut au code JavaScript d’une procédure stockée ; vous n’avez pas besoin de créer l’objet. Cet objet contient les méthodes dans l’API de la procédure stockée. Par exemple :
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(...); ... $$ ;
Des exemples de code plus complets sont fournis dans Travailler avec des procédures stockées.
Constantes¶
Zéro.
Méthodes¶
-
createStatement
(sql_command_object)¶ Cette méthode crée un objet
Statement
et le renvoie. La méthodeexecute()
de l’objet peut être exécutée ultérieurement.- Paramètre(s)
sql_command_object
:Le paramètre d’entrée est un objet JSON (dictionnaire) contenant le texte de l’instruction à exécuter et toutes les valeurs devant être liées à cette instruction.
- Renvoie
Un objet
Statement
.- Erreurs
Lance une erreur JavaScript si :
sqlText
est manquant ou contient un texte de requête vide.L’instruction tente de lier un argument dont le type de données n’est pas pris en charge. Pour plus d’informations sur le mappage des types de données, voir Mappage de type de données SQL et JavaScript. Pour plus d’informations sur la liaison, voir Variables de liaison.
- Exemples
Cet exemple ne lie aucune valeur :
var stmt = snowflake.createStatement( {sqlText: "INSERT INTO table1 (col1) VALUES (1);"} );
Cet exemple lie des valeurs :
var stmt = snowflake.createStatement( { sqlText: "INSERT INTO table2 (col1, col2) VALUES (?, ?);", binds:["LiteralValue1", variable2] } );
Pour plus d’informations sur la liaison, y compris des exemples supplémentaires, voir Variables de liaison.
-
execute
(command)¶ Cette méthode exécute directement une commande SQL.
- Paramètres
La saisie est la même que pour la méthode
createStatement()
.- Renvoie
Un jeu de résultats sous la forme d’un objet
ResultSet
.- Erreurs
Lance une erreur JavaScript si :
Une erreur, telle qu’une erreur de compilation, s’est produite lors de l’exécution de la requête.
sqlText
est manquant ou contient un texte de requête vide.L’instruction tente de lier un argument dont le type de données n’est pas pris en charge. Pour plus d’informations sur le mappage des types de données, voir Mappage de type de données SQL et JavaScript. Pour plus d’informations sur la liaison, y compris des exemples supplémentaires, voir Variables de liaison.
Note
Cette méthode
execute()
(par exemple,snowflake.execute()
) n’est pas exactement identique à la méthode de l’objetStatement
(par exemple,Statement.execute()
).
Objet : Statement
¶
Un objet de procédure stockée Statement
fournit les méthodes permettant d’exécuter une instruction de requête et d’accéder à des métadonnées (telles que des types de données de colonnes) relatives à l’instruction.
Au moment de la création de l’objet Instruction, SQL est analysé et une instruction préparée est créée.
Constantes¶
Zéro.
Méthodes¶
-
execute
() Cette méthode exécute l’instruction préparée stockée dans cet objet
Statement
.- Paramètres
Aucune, car la méthode utilise des informations déjà stockées dans l’objet
Statement
.- Renvoie
Un jeu de résultats sous la forme d’un objet
ResultSet
.- Erreurs
Lance une erreur JavaScript en cas d’échec de la requête.
- Exemples
Note
Cette méthode
execute()
(par exemple,Statement.execute()
) n’est pas exactement identique à la méthode de l’objetsnowflake
(par exemple,snowflake.execute()
).snowflake.execute(statement_in_JSON_form)
nécessite un paramètre, qui est l’instruction SQL à exécuter.Statement.execute()
ne prend aucun paramètre ; il utilise l’instruction SQL spécifiée au moment de la création de l’objet Instruction.
-
getColumnCount
()¶ Cette méthode renvoie le nombre de colonnes dans le jeu de résultats pour une requête exécutée. Si la requête n’a pas encore été exécutée, cette méthode génère une erreur.
- Paramètres
Zéro.
- Renvoie
Le nombre de colonnes.
- Erreurs
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée (le nombre de colonnes retournées ne peut donc nécessairement pas être déterminé).
- Exemples
var column_count = statement.getColumnCount();
-
getColumnName
(colIdx)¶ Cette méthode retourne le nom de la colonne spécifiée.
- Paramètres
Le numéro d’index de la colonne (à partir de
1
et non de0
).- Renvoie
Le nom de la colonne.
- Erreurs
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec l’index spécifié n’existe.
-
getColumnScale
(colIdx)¶ Cette méthode renvoie l’échelle de la colonne spécifiée. L’échelle est le nombre de chiffres après le point décimal. L’échelle de la colonne a été spécifiée dans l’instruction CREATE TABLE ou ALTER TABLE. Par exemple :
create table scale_example ( n10_4 numeric(10, 4) // Precision is 10, Scale is 4. );
Bien que cette méthode puisse être appelée pour tout type de données, elle est destinée à être utilisée avec des types de données numériques.
- Paramètres
L’index de la colonne pour laquelle vous voulez l’échelle (à partir de
1
, pas0
).- Renvoie
L’échelle de la colonne (pour les colonnes numériques) ;
0
pour les colonnes non numériques.- Erreurs
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec l’index spécifié n’existe.
- Exemples
Voir Travailler avec des procédures stockées (recherchez
getColumnScale()
).
-
getColumnSqlType
(colIdx|colName)¶ Cette méthode renvoie le type de données SQL de la colonne spécifiée.
- Paramètres
Soit le numéro d’index de la colonne (à partir de
1
, pas0
), soit le nom de la colonne. (La méthode est surchargée pour accepter différents types de données en tant que paramètres.)Le nom de la colonne doit être entièrement écrit en majuscules, sauf si des guillemets doubles ont été utilisés dans le nom de la colonne lors de la création de la table (autrement dit, la casse du nom de la colonne a été préservée).
- Renvoie
Le type de données SQL de la colonne.
- Erreurs
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec le nom ou l’index spécifié n’existe.
-
getColumnType
(colIdx|colName)¶ Cette méthode renvoie le type de données JavaScript de la colonne spécifiée.
- Paramètres
Soit le numéro d’index de la colonne (à partir de
1
, pas0
), soit le nom de la colonne. (La méthode est surchargée pour accepter différents types de données en tant que paramètres.)Le nom de la colonne doit être entièrement écrit en majuscules, sauf si des guillemets doubles ont été utilisés dans le nom de la colonne lors de la création de la table (autrement dit, la casse du nom de la colonne a été préservée).
- Renvoie
Le type de données JavaScript de la colonne.
- Erreurs
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec l’index ou le nom spécifié n’existe.
-
getNumDuplicateRowsUpdated
()¶ Cette méthode renvoie le nombre de lignes « dupliquées » (souvent appelées lignes multi-jointes) mises à jour par cette instruction. (Pour plus d’informations sur la façon dont les lignes multi-jointes sont formées, voir les Notes sur l’utilisation et exemples pour l’instruction UPDATE).
- Paramètres
Zéro.
- Renvoie
Une valeur de type Nombre qui indique le nombre de lignes multi-jointes mises à jour.
- Erreurs
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée.
-
getNumRowsAffected
()¶ Cette méthode renvoie le nombre de lignes affectées (par exemple, insérées/mises à jour/supprimées) par cette instruction.
Si plus d’un type de changement s’applique (par exemple, une opération MERGE a inséré certaines lignes et en a mis d’autres à jour), alors le nombre est le nombre total de lignes affectées par tous les changements.
- Paramètres
Zéro.
- Renvoie
Une valeur de type Nombre qui indique le nombre de lignes affectées.
- Erreurs
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée.
-
getNumRowsDeleted
()¶ Cette méthode renvoie le nombre de lignes supprimées par cette instruction.
- Paramètres
Zéro.
- Renvoie
Une valeur de type Nombre qui indique le nombre de lignes supprimées.
- Erreurs
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée.
-
getNumRowsInserted
()¶ Cette méthode renvoie le nombre de lignes insérées par cette instruction.
- Paramètres
Zéro.
- Renvoie
Une valeur de type Nombre qui indique le nombre de lignes insérées.
- Erreurs
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée.
-
getNumRowsUpdated
()¶ Cette méthode renvoie le nombre de lignes mises à jour par cette instruction.
- Paramètres
Zéro.
- Renvoie
Une valeur de type Nombre qui indique le nombre de lignes mises à jour.
- Erreurs
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée.
-
getRowCount
()¶ Cette méthode retourne le nombre de lignes dans le jeu de résultats pour une requête exécutée. Si la requête n’a pas encore été exécutée, cette méthode génère une erreur.
- Paramètres
Zéro.
- Renvoie
Le nombre de lignes.
- Erreurs
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée (et donc le nombre de lignes retournées ne peut pas être déterminé).
- Exemples
var row_count = statement.getRowCount();
-
getQueryId
()¶ Cette méthode renvoie le UUID de la dernière requête exécutée.
- Paramètres
Zéro.
- Renvoie
Une chaîne contenant un UUID, qui correspond à l’ID de la requête.
- Erreurs
Si aucune requête n’a encore été exécutée par cette instruction, la méthode lève l’erreur « L’instruction n’est pas encore exécutée ».
- Exemples
var queryId = statement.getQueryId();
-
getSqlText
()¶ Cette méthode renvoie le texte de la requête préparée dans l’objet
Statement
.- Paramètres
Zéro.
- Renvoie
Une chaîne du texte de requête préparé.
- Erreurs
Zéro.
- Exemples
var queryText = statement.getSqlText();
-
isColumnNullable
(colIdx)¶ Cette méthode indique si la colonne spécifiée autorise les valeurs SQL NULL.
- Paramètres
L’index de la colonne (à partir de
1
, pas0
).- Renvoie
true
si la colonne autorise les valeurs SQL NULL ; sinon,false
.- Erreurs
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec l’index spécifié n’existe.
-
isColumnText
(colIdx)¶ Cette méthode retourne true si le type de données de la colonne est l’un des types de données texte SQL suivants :
CHAR ou CHAR(N), ainsi que leurs synonymes CHARACTER et CHARACTER(N)
VARCHAR ou VARCHAR(N)
STRING
TEXT
Sinon, il retourne faux.
- Paramètres
L’index de la colonne (à partir de
1
, pas0
).- Renvoie
true
si le type de données de la colonne est l’un des types de données texte SQL ;false
pour tous les autres types de données.- Erreurs
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec l’index spécifié n’existe.
Note
L’API fournit plusieurs méthodes pour déterminer le type de données d’une colonne. La première méthode est décrite en détail ci-dessus. Les méthodes restantes ont les mêmes paramètres et les mêmes erreurs. La seule différence est la valeur de retour.
-
isColumnArray
(colIdx)¶ - Renvoie
true
si le type de données de la colonne est ARRAY (pour les données semi-structurées) ;false
pour tous les autres types de données.
-
isColumnBinary
(colIdx)¶ - Renvoie
true
si le type de données de la colonne est BINARY ou VARBINARY ;false
pour tous les autres types de données.
-
isColumnBoolean
(colIdx)¶ - Renvoie
true
si le type de données de la colonne est BOOLEAN ;false
pour tous les autres types de données.
-
isColumnDate
(colIdx)¶ - Renvoie
true
si le type de données de la colonne est DATE ;false
pour tous les autres types de données.
-
isColumnNumber
(colIdx)¶ - Renvoie
true
si le type de données de la colonne est l’un des types SQL numériques (NUMBER, NUMERIC, DECIMAL, INT, INTEGER, BIGINT, SMALLINT, TINYINT, BYTEINT, FLOAT, FLOAT4, FLOAT8, DOUBLE, DOUBLE PRECISION ou REAL) ;false
pour tous les autres types de données.
-
isColumnObject
(colIdx)¶ - Renvoie
true
si le type de données de la colonne est OBJECT (pour les données semi-structurées) ;false
pour tous les autres types de données.
-
isColumnTime
(colIdx)¶ - Renvoie
true
si le type de données de la colonne est TIME ou DATETIME ;false
pour tous les autres types de données.
-
isColumnTimestamp
(colIdx)¶ - Renvoie
true
si le type de données de la colonne est l’un des types d’horodatage SQL (TIMESTAMP, TIMESTAMP_LTZ, TIMESTAMP_NTZ ou TIMESTAMP_TZ) ;false
pour tous les autres types de données, y compris les autres types de données de date et d’heure (DATE, TIME ou DATETIME).
-
isColumnVariant
(colIdx)¶ - Renvoie
true
si le type de données de la colonne est VARIANT (pour les données semi-structurées) ;false
pour tous les autres types de données.
Objet : ResultSet
¶
Cet objet contient les résultats renvoyés par une requête. Les résultats sont traités comme un ensemble de zéro ou plusieurs lignes, chacune contenant une ou plusieurs colonnes. Le terme « ensemble » n’est pas utilisé ici au sens mathématique. En mathématiques, un ensemble est non ordonné, alors qu’un ResultSet
a un ordre.
Un ResultSet
ressemble à certains égards au concept de curseur SQL. Par exemple, vous pouvez voir une ligne à la fois dans un ResultSet
, tout comme vous pouvez voir une ligne à la fois dans un curseur.
Généralement, après avoir récupéré un ResultSet
, vous le parcourez en répétant les opérations suivantes :
Appelez
next()
pour obtenir la ligne suivante.Récupérez les données de la ligne en cours en appelant des méthodes telles que
getColumnValue()
.
Si vous ne connaissez pas suffisamment les données du ResultSet
(par exemple, vous ne connaissez pas le type de données de chaque colonne), vous pouvez appeler d’autres méthodes fournissant des informations sur les données.
Certaines des méthodes de l’objet ResultSet
sont similaires à celles de l’objet Statement
. Par exemple, les deux objets ont une méthode getColumnSqlType(colIdx)
.
Constantes¶
Zéro.
Méthodes¶
-
getColumnCount
() Cette méthode renvoie le nombre de colonnes de ce ResultSet.
- Paramètres
Zéro.
- Renvoie
Une valeur de type Nombre qui indique le nombre de colonnes.
- Erreurs
Zéro.
-
getColumnSqlType
(colIdx|colName) Cette méthode renvoie le type de données SQL de la colonne spécifiée.
- Paramètres
Soit le numéro d’index de la colonne (à partir de
1
, pas0
), soit le nom de la colonne. (La méthode est surchargée pour accepter différents types de données en tant que paramètres.)Le nom de la colonne doit être entièrement écrit en majuscules, sauf si des guillemets doubles ont été utilisés dans le nom de la colonne lors de la création de la table (autrement dit, la casse du nom de la colonne a été préservée).
- Renvoie
Le type de données SQL de la colonne.
- Erreurs
Lance une erreur JavaScript si :
ResultSet
est vide ounext()
n’a pas encore été appelé.Aucune colonne avec l’index ou le nom spécifié n’existe.
-
getColumnValue
(colIdx|colName)¶ Cette méthode renvoie la valeur d’une colonne de la ligne actuelle (c’est-à-dire la dernière ligne récupérée par
next()
).- Paramètres
Soit le numéro d’index de la colonne (à partir de
1
, pas0
), soit le nom de la colonne. (La méthode est surchargée pour accepter différents types de données en tant que paramètres.)Le nom de la colonne doit être entièrement écrit en majuscules, sauf si des guillemets doubles ont été utilisés dans le nom de la colonne lors de la création de la table (autrement dit, la casse du nom de la colonne a été préservée).
- Renvoie
La valeur de la colonne spécifiée.
- Erreurs
Lance une erreur JavaScript si :
ResultSet
est vide ounext()
n’a pas encore été appelé.Aucune colonne avec l’index ou le nom spécifié n’existe.
- Exemples
Convertissez une ligne de la base de données en un tableau 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 = []; }
La valeur d’une colonne est également accessible en tant que propriété de l’objet
ResultSet
(par exemple,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 = []; }
Note
N’oubliez pas que, à moins que le nom de la colonne ne soit délimité par des guillemets dans l’instruction CREATE TABLE, le nom de la colonne doit être tout en majuscules dans le code JavaScript.
-
getColumnValueAsString
(colIdx|colName)¶ Cette méthode renvoie la valeur d’une colonne sous forme de chaîne, ce qui est utile lorsque vous avez besoin d’une valeur de colonne, quel que soit le type de données d’origine dans la table.
La méthode est identique à la méthode
getColumnValue()
sauf qu’elle renvoie une valeur de chaîne.Pour plus de détails, voir
getColumnValue()
.
-
getNumRowsAffected
() Cette méthode renvoie le nombre de lignes affectées (par exemple, insérées/mises à jour/supprimées) par l’instruction qui a généré ce ResultSet.
Si plus d’un type de changement s’applique (par exemple, une opération MERGE a inséré certaines lignes et en a mis d’autres à jour), alors le nombre est le nombre total de lignes affectées par tous les changements.
- Paramètres
Zéro.
- Renvoie
Une valeur de type Nombre qui indique le nombre de lignes affectées.
- Erreurs
Zéro.
-
getQueryId
() Cette méthode renvoie le UUID de la dernière requête exécutée.
- Paramètres
Zéro.
- Renvoie
Une chaîne contenant un UUID, qui correspond à l’ID de la requête.
- Exemples
var queryId = resultSet.getQueryId();
-
getRowCount
() Cette méthode renvoie le nombre de lignes dans ce ResultSet. (Il s’agit du nombre total de lignes, et non du nombre de lignes qui n’ont pas encore été consommées).
- Paramètres
Zéro.
- Renvoie
Une valeur de type Nombre qui indique le nombre de lignes.
- Erreurs
Zéro.
-
next
()¶ Cette méthode obtient la ligne suivante du
ResultSet
et la rend accessible.Cette méthode ne renvoie pas la nouvelle ligne de données. Au lieu de cela, elle rend la ligne disponible afin que vous puissiez appeler des méthodes telles que
ResultSet.getColumnValue()
pour récupérer les données.Notez que vous devez appeler
next()
pour chaque ligne du jeu de résultats, en incluant la première ligne.- Paramètres
Zéro.
- Renvoie
true
s’il a récupéré une ligne etfalse
s’il n’y a plus de lignes à récupérer.Ainsi, vous pouvez parcourir
ResultSet
jusqu’à ce quenext()
renvoie false.- Erreurs
Zéro.
Objet : SfDate
¶
JavaScript n’a pas de type de données natif qui correspond aux types de données Snowflake SQL TIMESTAMP_LTZ, TIMESTAMP_NTZ et TIMESTAMP_TZ. Lorsque vous récupérez une valeur de type TIMESTAMP dans la base de données et souhaitez la stocker en tant que variable JavaScript (par exemple, pour copier la valeur d’un ResultSet dans une variable JavaScript), utilisez SfDate
du type de données JavaScript défini par Snowflake. Le type de données SfDate
(« date SnowFlake ») est une extension du type de données de date JavaScript. SfDate
propose des méthodes supplémentaires, décrites ci-dessous.
Constantes¶
Zéro.
Méthodes¶
Sauf indication contraire, les exemples ci-dessous tiennent compte du fuseau horaire UTC.
-
getEpochSeconds
()¶ Cette méthode renvoie le nombre de secondes écoulées depuis le début de « l’époque » (minuit, 1er janvier, 1970).
- Paramètres
Zéro.
- Renvoie
Nombre de secondes entre minuit, 1er janvier, 1970 et l’horodatage stocké dans la variable.
- Exemples
Créez la procédure stockée :
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(); $$ ;
Transmettez les différents horodatages de procédure et récupérez le nombre de secondes écoulées depuis l’époque pour chaque horodatage.
CALL test_get_epoch_seconds('1970-01-01 00:00:00.000000000'); +------------------------+ | TEST_GET_EPOCH_SECONDS | |------------------------| | 0 | +------------------------+
CALL test_get_epoch_seconds('1970-01-01 00:00:01.987654321'); +------------------------+ | TEST_GET_EPOCH_SECONDS | |------------------------| | 1 | +------------------------+
CALL test_get_epoch_seconds('1971-01-01 00:00:00'); +------------------------+ | TEST_GET_EPOCH_SECONDS | |------------------------| | 31536000 | +------------------------+
-
getNanoSeconds
()¶ Cette méthode renvoie la valeur du champ nanosecondes de l’objet. Notez qu’il ne s’agit que de la fraction de seconde, et non des nanosecondes depuis le début de l’époque. Ainsi, la valeur est toujours comprise entre 0 et 999999999.
- Paramètres
Zéro.
- Renvoie
Le nombre de nanosecondes.
- Exemples
Créez la procédure stockée :
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');
Transmettez les différents horodatages de procédure et récupérez le nombre de nanosecondes de chacun.
CALL test_get_nano_seconds2('1970-01-01 00:00:00.000000000'); +------------------------+ | TEST_GET_NANO_SECONDS2 | |------------------------| | 0 | +------------------------+
CALL test_get_nano_seconds2('1970-01-01 00:00:01.987654321'); +------------------------+ | TEST_GET_NANO_SECONDS2 | |------------------------| | 987654321 | +------------------------+
CALL test_get_nano_seconds2('1971-01-01 00:00:00.000123456'); +------------------------+ | TEST_GET_NANO_SECONDS2 | |------------------------| | 123456 | +------------------------+
-
getScale
()¶ Cette méthode renvoie la précision du type de données, c’est-à-dire le nombre de chiffres après le point décimal. Par exemple, la précision de TIMESTAMP_NTZ(3) est égale à 3 (millisecondes). La précision de TIMESTAMP_NTZ(0) est 0 (pas de fraction de seconde). La précision de TIMSTAMP_NTZ est 9 (nanosecondes).
Le minimum est 0. Le maximum est 9 (la précision est de 1 nanoseconde). La précision par défaut est 9.
- Paramètres
Zéro.
- Renvoie
Le nombre de chiffres après la décimale (nombre de chiffres dans le champ de secondes fractionnaires).
- Exemples
Créez la procédure stockée :
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');
Dans cet exemple, l’horodatage est défini sur TIMESTAMP_NTZ(0), la précision est donc 0.
CALL test_get_scale('1970-01-01 00:00:00', '0'); +----------------+ | TEST_GET_SCALE | |----------------| | 0 | +----------------+
Dans cet exemple, l’horodatage est défini sur TIMESTAMP_NTZ(2), la précision est donc 2.
CALL test_get_scale('1970-01-01 00:00:01.123', '2'); +----------------+ | TEST_GET_SCALE | |----------------| | 2 | +----------------+
Dans cet exemple, l’horodatage est défini sur TIMESTAMP_NTZ. Par conséquent, la précision est 9, la valeur par défaut.
CALL test_get_scale('1971-01-01 00:00:00.000123456', '9'); +----------------+ | TEST_GET_SCALE | |----------------| | 9 | +----------------+
-
getTimezone
()¶ Cette méthode renvoie le fuseau horaire sous la forme du nombre de minutes avant ou après UTC.
- Paramètres
Zéro.
- Renvoie
Le fuseau horaire est indiqué en nombre de minutes avant ou après UTC.
- Exemples
Créez la procédure stockée :
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(); $$ ;
Dans cet exemple, le fuseau horaire est de 8 heures (480 minutes) en retard par rapport à UTC.
CALL test_get_timezone('1970-01-01 00:00:01-08:00'); +-------------------+ | TEST_GET_TIMEZONE | |-------------------| | -480 | +-------------------+
Dans cet exemple, le fuseau horaire est de 11 heures (660 minutes) en avance par rapport à UTC.
CALL test_get_timezone('1971-01-01 00:00:00.000123456+11:00'); +-------------------+ | TEST_GET_TIMEZONE | |-------------------| | 660 | +-------------------+
-
toString
()¶ - Paramètres
Zéro.
- Renvoie
Cette méthode retourne une représentation sous forme de chaîne de l’horodatage.
- Exemples
Cela montre un exemple simple de création de
SfDate
et d’appel de sa méthodetoString
: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(); $$ ;
CALL test_toString('1970-01-02 03:04:05'); +------------------------------------------------------------------+ | TEST_TOSTRING | |------------------------------------------------------------------| | "Fri Jan 02 1970 03:04:05 GMT+0000 (Coordinated Universal Time)" | +------------------------------------------------------------------+