繁体   English   中英

如何在sql中使用时间戳字符串查询日期时间戳字段

[英]How to Query a date timestamp field with a timestamp string in sql

我正在尝试使用 jt400 npm 包在日期字段上查询 as400 sql 数据库。 在表 t 上,mydate 是一个时间戳字符串,它应该等于键,但由于某种原因它不起作用。 在之前的查询中,我得到了 key 的值。 然后将它准确地传递回这个查询中。 如何确保日期比较有效?

const key = '123456789' // some date as a timestamp
const sql = `select * from table t where varchar_format(t.mydate, 'YYYYMMDD') = varchar_format(?, 'YYYYMMDD');`

this.pool.query(sql, [key])

然后我得到错误

Error running instance method\njava.sql.SQLException: Data type mismatch. (20190525)\n\tat com.ibm.as400.access.JDError.createSQLExceptionSubClass(JDError.java:828)\n\tat com.ibm.as400.access.JDError.throwSQLException(JDError.java:495)\n\tat com.ibm.as400.access.JDError.throwSQLException(JDError.java:464)\n\tat com.ibm.as400.access.SQLTimestamp.setTimestampFieldsFromString(SQLTimestamp.java:79)\n\tat com.ibm.as400.access.SQLTimestamp.set(SQLTimestamp.java:469)\n\tat com.ibm.as400.access.AS400JDBCPreparedStatement.setValue(AS400JDBCPreparedStatement.java:3583)\n\tat com.ibm.as400.access.AS400JDBCPreparedStatement.setString(AS400JDBCPreparedStatement.java:3231)\n\tat nodejt400.JdbcJsonClient.setParams(Unknown Source)\n\tat nodejt400.JdbcJsonClient.query(Unknown Source)\n\tat nodejt400.JT400.query(Unknown Source)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n

我错过了这样一个事实,即密钥的格式为 YYYYMMDD,而 varchar_format 正在寻找日期,而不是字符串。

const sql = select * from table t where varchar_format(t.mydate, 'YYYYMMDD') = ?;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM