SQL-запрос с датой возвращает дату и время в узле mssql

Я использую v6.3.1 узла mssql. Мой запрос включает несколько столбцов типа date. В узле mssql выходные данные всех столбцов даты имеют формат: 2020-10-20T00:00:00.000Z Когда я делаю тот же запрос в Azure Data Studio, я получаю: 2020-10-20

Моя проблема заключается в том, что мне нужно обновить базу данных, поскольку я получаю сообщение об ошибке в формате ГГГГ-ММ-ДД. есть ли способ обновить базу данных без необходимости проверять каждое поле, если это дата, а затем добавлять к нему 0T00:00:00.000Z?

Текущий код таков:

// Запускается при запуске сервера

const sql = require('mssql')

const poolPromise = sql.connect({
  server: process.env.SQL_SERVER,
  user: process.env.SQL_USER,
  password: process.env.SQL_PASSWORD,
  database: process.env.SQL_DATABASE
})

// Выполняется при запросе

async function updateSqlRecord(fields) {
// Adding fields below for demonstration
  let fields = {id: 1, name: 'test', date: '2020-10-12' }

  let database = process.env.SQL_DATABASE
  let table = 'Test'
  let querystring = `UPDATE [${database}].[dbo].[${table}] SET `

  Object.entries(fields).forEach(field => {
    const [key, value] = field;
    querystring += `${key} = '${value}', `
  });

  querystring = querystring.slice(0, -2)
  querystring += ` WHERE projektNr = ${fields.projektNr}`
  try {
    let pool = await poolPromise
    let result = await pool.request()
      // .input('projektNr', sql.Int, value)
      .query(querystring)
    console.log(result)
    return result.rowsAffected
  } catch (err) {
      console.log('SQL request Error',err)
  }

}


person Patrick Bender    schedule 05.01.2021    source источник
comment
Оповещение о SQL-инъекциях   -  person Charlieface    schedule 05.01.2021


Ответы (1)


Если возможно, вы можете попробовать использовать moment.js для анализа даты перед добавлением ее в базу данных.

var moment = require('moment');
...
var formatedDate = moment(myDate).format('YYYY/MM/DD HH:MM:SS').toISOString();
person vtolentino    schedule 05.01.2021
comment
Moment.js — это устаревший проект, который сейчас находится в режиме обслуживания. В большинстве случаев вам следует выбрать другую библиотеку. - person Mateusz; 05.01.2021
comment
Да, у меня было такое решение, но тогда я должен проверить, какие поля содержат даты, а затем отформатировать. Вот чего я хочу избежать. - person Patrick Bender; 05.01.2021