web-dev-qa-db-fra.com

Date Javascript vers objet date SQL

J'essaie d'écrire une requête qui prend un objet de date Javascript, puis le place dans un type d'objet reconnu par les types de base de données SQL Server et Oracle.

Le problème est que j'utilise des services Web. Il doit donc s'agir d'une chaîne et non d'un paramètre réellement transmis. Voici ce que je veux dire:

var date = new Date();
var firstDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1);
var lastDayOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0);

var webServicesQueryWhereClause = 'readDate BETWEEN '+firstDayOfMonth+' AND '+lastDayOfMonth;

Sauf que firstDayOfMonth et lastDayOfMonth sont entourés par quelque chose comme to_date() pour les mettre réellement dans un format de date que les bases de données peuvent lire. Par exemple:

var webServicesQueryWhereClause = 'readDate BETWEEN to_date('+firstDayOfMonth+') AND to_date('+lastDayOfMonth+') ';

Que dois-je utiliser pour mettre ces dates sous une forme qui peut être lue par SQL Server et Oracle?

14
Graham

Avez-vous essayé les solutions présentées ici:

Convertir l'heure de la date JS en datetime MySQL

Le titre doit être appelé

"Convertir la date JS en SQL DateTime"

Il se trouve que je devais faire la même chose que vous tout à l'heure et je suis tombé sur cela après votre question.

Ceci est de l'autre article de Gajus Kuizinas pour ceux qui veulent les réponses sur cette page:

var pad = function(num) { return ('00'+num).slice(-2) };
var date;
date = new Date();
date = date.getUTCFullYear()        + '-' +
        pad(date.getUTCMonth() + 1) + '-' +
        pad(date.getUTCDate()       + ' ' +
        pad(date.getUTCHours()      + ':' +
        pad(date.getUTCMinutes()    + ':' +
        pad(date.getUTCSeconds();     

ou

new Date().toISOString().slice(0, 19).replace('T', ' ');

Le premier a fonctionné pour moi. J'ai également eu un problème de référence avec le toISOString, bien que je préfère le revêtement unique. Quelqu'un peut-il clarifier comment l'utiliser et connaître les limites sur lesquelles on peut le référencer? Bonne chance!

38
JPK