关于Oracle查询时间是字符串类型的范围
遇到一个Oracle数据库中一个存储时间的字段不是时间类型,但是要查询时间范围
该字段属性是varcher2 类型
node.js代码
//获取开始时间和结束时间 start=2021-11-08%2000:00:00&end=2021-11-09%2000:00:00
var starttime = req.query.start;
var endtime = req.query.end;
var s = ' 00:00:00' //因为数据库时间的格式是yyyy/mm/dd 24h:mi:ss
//如果时间不为undefined(这里是时间为空是node后台输出的undefined)
if (starttime!==undefined&&starttime!==''){
var date = new Date(starttime)
starttime = date.toLocaleDateString().split('-').join('/') //2021/11/8
starttime = starttime+s; //2021/11/8 00:00:00
sql = sql+' AND TIME >= (\''+starttime+'\')'
}
if (endtime!==undefined&&endtime!==''){
var dates = new Date(endtime)
endtime = dates.toLocaleDateString().split('-').join('/')
endtime = endtime +s;
sql = sql+' AND TIME <= (\''+endtime+'\')'
}
注:因为ES6中已经去掉了Format() 的方法,所以这里我们使用toLocaleDateString()
数据库中我们尽量把存的时间设置为时间类型,这样不仅规范,而且减少了不必要的代码。