我正在尝试将时刻日期作为变量传递给查询。当我使用控制台日志时,日期是正确的,但是当查询运行时,它将获得当前日期-1 ...
代码如下:
const dateEnd = moment().format('YYYY-MM-DD 23:59:59');
const dateStart = moment().format('YYYY-MM-DD 00:00:00');
// console.log(dateEnd)<-- They come back correct
// console.log(dateStart)
// process.exit();
let pool = await sql.connect(dbconfig)
//Get records from table
let getRecords = await pool.request()
.input('dateStart', sql.Date, dateStart)
.input('incrm', sql.VarChar, 'yes')
.input('dateEnd', sql.Date, dateEnd)
.query('select * from database.dbo.table where someValue in (231312,7132133) and incrm=@incrm and processeddate between @dateStart and @dateEnd and email is not null')
答案 0 :(得分:0)
node-mssql
库希望日期作为Date
对象传递。
如果您希望当天与运行此代码的计算机位于同一时区,请尝试以下操作:
const dateStart = moment().startOf('day').toDate();
const dateEnd = moment().endOf('day').toDate();
或者,如果您想要当前的UTC日期,则:
const dateStart = moment.utc().startOf('day').toDate();
const dateEnd = moment.utc().endOf('day').toDate();
或者,如果要在特定时区(例如美国中部时间)中显示当前日期,请使用moment-timezone附加库:
const dateStart = moment.tz('America/Chicago').startOf('day').toDate();
const dateEnd = moment.tz('America/Chicago').endOf('day').toDate();
所有这三个条件都假设processeddate
是数据库中的UTC。
您可能还应该通过sql.DateTime2
而不是sql.Date
。