javascript - column 是没有时区的 timestamp 类型,但 expression 是 integer 类型

标签 javascript sql node.js postgresql

我收到如下错误消息,当我像其他人一样设置列时间戳 timestamp without time zone NOT NULL 时创建此表,但是当我尝试插入 2015-08-16 18 :51:05 到这个表,然后我得到错误,但其他表是工作的,为什么以及如何解决它?

CREATE TABLE IF NOT EXISTS "UserForgetPasswordPending"(
"UserForgetPasswordPendingId" SERIAL NOT NULL,
"Email" varchar(50) NOT NULL,
"TokenTimestamp" timestamp without time zone NOT NULL,
"Token" varchar(100) NOT NULL,
PRIMARY KEY ("UserForgetPasswordPendingId")
);
ALTER TABLE "UserForgetPasswordPending"
  OWNER TO db_admin;

错误

[error: column "TokenTimestamp" is of type timestamp without time zone but expression is of type integer]
  name: 'error',
  length: 216,
  severity: 'ERROR',
  code: '42804',
  detail: undefined,
  hint: 'You will need to rewrite or cast the expression.',

插入

var utc = moment(new Date()).unix();
var tokenTimestamp = moment.unix(utc).format('YYYY-MM-DD HH:mm:ss');

var upsertUserForgetPasswordPending = function(userEmail, tokenTimestamp, token) {
  return new Promise(function (fulfill, reject){
    var queryInsert = 'INSERT INTO "UserForgetPasswordPending" ("Email","TokenTimestamp","Token") SELECT $1,2,$3';
    var queryUpsert = 'UPDATE "UserForgetPasswordPending" SET "TokenTimestamp" = $2, "Token" = $3 WHERE "Email" = $1';
    var query = 'WITH upsert AS ('+queryUpsert+' RETURNING *) '+queryInsert+' WHERE NOT EXISTS (SELECT * FROM upsert)';
console.log(tokenTimestamp);
    dbClient.query(query, [userEmail,tokenTimestamp,token], function(error, result) {
      if (error) {
        reject(error);
      } else {
        fulfill(result);
      }
    });
  });
};

最佳答案

这是因为您要将整数数据插入到 time stamp 列。

更正以下语法:

var queryInsert = 'INSERT INTO "UserForgetPasswordPending ("Email","TokenTimestamp","Token") SELECT $1,2,$3';

在上面的查询中,您为 TokenTimestamp 选择了 2,这就是您收到此错误的原因。

您应该将 2 替换为某种日期时间格式 yyyy-mm-dd hh:mm:ss

例如:'2015-08-07 05:00:01'

关于javascript - column 是没有时区的 timestamp 类型,但 expression 是 integer 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32034274/

相关文章:

node.js - 如何在 Express 中使用 Jade 的 CoffeeScript 过滤器?

javascript - AngularJS 将 POST 响应视为字符串数组而不仅仅是字符串

javascript - 窗口计算中的视差背景位置

java - SQLException : Column AD not in specified tables - column AD never specified

java - 可以批量sql查询吗?

javascript - 如何在 for 循环中迭代以下代码?

javascript - SVG路径优化

javascript - 如何重置angularjs中的输入字段和复选框

javascript - Facebox - Jquery 1.2.1 关闭功能在 1.3.2 中损坏

java - android/Windows 应用程序 viber(聊天示例)