Skip to content

Commit

Permalink
Update date examples
Browse files Browse the repository at this point in the history
  • Loading branch information
sharadraju committed May 24, 2023
1 parent 10e4965 commit 905a203
Show file tree
Hide file tree
Showing 2 changed files with 243 additions and 245 deletions.
241 changes: 120 additions & 121 deletions examples/date_timestamp1.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,124 +35,123 @@
*
*****************************************************************************///

'use strict';

Error.stackTraceLimit = 50;

// Using a fixed Oracle time zone helps avoid machine and deployment differences
// process.env.ORA_SDTZ = 'UTC';

const oracledb = require('oracledb');
const dbConfig = require('./dbconfig.js');

// This example runs in both node-oracledb Thin and Thick modes.
//
// Optionally run in node-oracledb Thick mode
if (process.env.NODE_ORACLEDB_DRIVER_MODE === 'thick') {
// Thick mode requires Oracle Client or Oracle Instant Client libraries. On
// Windows and macOS Intel you can specify the directory containing the
// libraries at runtime or before Node.js starts. On other platforms (where
// Oracle libraries are available) the system library search path must always
// include the Oracle library path before Node.js starts. If the search path
// is not correct, you will get a DPI-1047 error. See the node-oracledb
// installation documentation.
let clientOpts = {};
if (process.platform === 'win32') { // Windows
// clientOpts = { libDir: 'C:\\oracle\\instantclient_19_17' };
} else if (process.platform === 'darwin' && process.arch === 'x64') { // macOS Intel
clientOpts = { libDir: process.env.HOME + '/Downloads/instantclient_19_8' };
}
oracledb.initOracleClient(clientOpts); // enable node-oracledb Thick mode
}

console.log(oracledb.thin ? 'Running in thin mode' : 'Running in thick mode');

oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT;

async function run() {

let connection;

try {
let result, date;

connection = await oracledb.getConnection(dbConfig);

console.log('Creating table');

const stmts = [
`DROP TABLE no_datetab`,

`CREATE TABLE no_datetab(
id NUMBER,
timestampcol TIMESTAMP,
timestamptz TIMESTAMP WITH TIME ZONE,
timestampltz TIMESTAMP WITH LOCAL TIME ZONE,
datecol DATE)`
];

for (const s of stmts) {
try {
await connection.execute(s);
} catch (e) {
if (e.errorNum != 942)
console.error(e);
}
}

// When bound, JavaScript Dates are inserted using TIMESTAMP WITH LOCAL TIMEZONE
date = new Date(1995, 11, 17); // 17th Dec 1995
console.log('Inserting JavaScript date: ' + date);
result = await connection.execute(
`INSERT INTO no_datetab (id, timestampcol, timestamptz, timestampltz, datecol)
VALUES (1, :ts, :tstz, :tsltz, :td)`,
{ ts: date, tstz: date, tsltz: date, td: date });
console.log('Rows inserted: ' + result.rowsAffected);

console.log('Query Results:');
result = await connection.execute(
`SELECT id, timestampcol, timestamptz, timestampltz, datecol,
TO_CHAR(CURRENT_DATE, 'DD-Mon-YYYY HH24:MI') AS CD
FROM no_datetab
ORDER BY id`);
console.log(result.rows);

console.log('Altering session time zone');
await connection.execute(`ALTER SESSION SET TIME_ZONE='+5:00'`); // resets ORA_SDTZ value

date = new Date(); // Current Date
console.log('Inserting JavaScript date: ' + date);
result = await connection.execute(
`INSERT INTO no_datetab (id, timestampcol, timestamptz, timestampltz, datecol)
VALUES (2, :ts, :tstz, :tsltz, :td)`,
{ ts: date, tstz: date, tsltz: date, td: date });
console.log('Rows inserted: ' + result.rowsAffected);

console.log('Query Results:');
result = await connection.execute(
`SELECT id, timestampcol, timestamptz, timestampltz, datecol,
TO_CHAR(CURRENT_DATE, 'DD-Mon-YYYY HH24:MI') AS CD
FROM no_datetab
ORDER BY id`);
console.log(result.rows);

// Show the queried dates are of type Date
let ts = result.rows[0]['TIMESTAMPCOL'];
ts.setDate(ts.getDate() + 5);
console.log('TIMESTAMP manipulation in JavaScript:', ts);

} catch (err) {
console.error(err);
} finally {
if (connection) {
try {
await connection.close();
} catch (err) {
console.error(err);
}
}
}
}

run();

'use strict';

Error.stackTraceLimit = 50;

// Using a fixed Oracle time zone helps avoid machine and deployment differences
// process.env.ORA_SDTZ = 'UTC';

const oracledb = require('oracledb');
const dbConfig = require('./dbconfig.js');

// This example runs in both node-oracledb Thin and Thick modes.
//
// Optionally run in node-oracledb Thick mode
if (process.env.NODE_ORACLEDB_DRIVER_MODE === 'thick') {
// Thick mode requires Oracle Client or Oracle Instant Client libraries. On
// Windows and macOS Intel you can specify the directory containing the
// libraries at runtime or before Node.js starts. On other platforms (where
// Oracle libraries are available) the system library search path must always
// include the Oracle library path before Node.js starts. If the search path
// is not correct, you will get a DPI-1047 error. See the node-oracledb
// installation documentation.
let clientOpts = {};
if (process.platform === 'win32') { // Windows
// clientOpts = { libDir: 'C:\\oracle\\instantclient_19_17' };
} else if (process.platform === 'darwin' && process.arch === 'x64') { // macOS Intel
clientOpts = { libDir: process.env.HOME + '/Downloads/instantclient_19_8' };
}
oracledb.initOracleClient(clientOpts); // enable node-oracledb Thick mode
}

console.log(oracledb.thin ? 'Running in thin mode' : 'Running in thick mode');

oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT;

async function run() {

let connection;

try {
let result, date;

connection = await oracledb.getConnection(dbConfig);

console.log('Creating table');

const stmts = [
`DROP TABLE no_datetab`,

`CREATE TABLE no_datetab(
id NUMBER,
timestampcol TIMESTAMP,
timestamptz TIMESTAMP WITH TIME ZONE,
timestampltz TIMESTAMP WITH LOCAL TIME ZONE,
datecol DATE)`
];

for (const s of stmts) {
try {
await connection.execute(s);
} catch (e) {
if (e.errorNum != 942)
console.error(e);
}
}

// When bound, JavaScript Dates are inserted using TIMESTAMP WITH LOCAL TIMEZONE
date = new Date(1995, 11, 17); // 17th Dec 1995
console.log('Inserting JavaScript date: ' + date);
result = await connection.execute(
`INSERT INTO no_datetab (id, timestampcol, timestamptz, timestampltz, datecol)
VALUES (1, :ts, :tstz, :tsltz, :td)`,
{ ts: date, tstz: date, tsltz: date, td: date });
console.log('Rows inserted: ' + result.rowsAffected);

console.log('Query Results:');
result = await connection.execute(
`SELECT id, timestampcol, timestamptz, timestampltz, datecol,
TO_CHAR(CURRENT_DATE, 'DD-Mon-YYYY HH24:MI') AS CD
FROM no_datetab
ORDER BY id`);
console.log(result.rows);

console.log('Altering session time zone');
await connection.execute(`ALTER SESSION SET TIME_ZONE='+5:00'`); // resets ORA_SDTZ value

date = new Date(); // Current Date
console.log('Inserting JavaScript date: ' + date);
result = await connection.execute(
`INSERT INTO no_datetab (id, timestampcol, timestamptz, timestampltz, datecol)
VALUES (2, :ts, :tstz, :tsltz, :td)`,
{ ts: date, tstz: date, tsltz: date, td: date });
console.log('Rows inserted: ' + result.rowsAffected);

console.log('Query Results:');
result = await connection.execute(
`SELECT id, timestampcol, timestamptz, timestampltz, datecol,
TO_CHAR(CURRENT_DATE, 'DD-Mon-YYYY HH24:MI') AS CD
FROM no_datetab
ORDER BY id`);
console.log(result.rows);

// Show the queried dates are of type Date
let ts = result.rows[0]['TIMESTAMPCOL'];
ts.setDate(ts.getDate() + 5);
console.log('TIMESTAMP manipulation in JavaScript:', ts);

} catch (err) {
console.error(err);
} finally {
if (connection) {
try {
await connection.close();
} catch (err) {
console.error(err);
}
}
}
}

run();
Loading

0 comments on commit 905a203

Please sign in to comment.