You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何CREATE TABLE语句报“Near '(': syntax error”?需生成数值时间戳

问题解决:CREATE TABLE语法错误与时间戳数值存储实现

错误原因

触发Near "(": syntax error的核心原因是current_timestamp()的写法错误——多数SQL数据库(比如SQLite)中,CURRENT_TIMESTAMP是内置时间常量,并非需要调用的函数,因此不能加括号。

修正方案(同时满足数值时间戳需求)

若要存储Unix时间戳(数值形式,如1671613200),需调整字段类型并使用对应数据库的时间戳生成函数作为默认值:

SQLite适配语句

CREATE TABLE IF NOT EXISTS tickets (
    numero INTEGER PRIMARY KEY AUTOINCREMENT,
    identifier VARCHAR(4) NOT NULL,
    subject VARCHAR(150) NOT NULL,
    concerned_staff TEXT NULL,
    author_id VARCHAR(22) NOT NULL,
    created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
    is_archived BOOLEAN NOT NULL DEFAULT false,
    ticket_channel_id VARCHAR(24) NOT NULL
);
  • 用strftime('%s', 'now')生成当前时间的秒级Unix时间戳,括号用于包裹表达式,符合SQLite语法要求;
  • 将created_at字段类型改为INTEGER,匹配数值型时间戳的存储需求。

其他数据库适配参考

  • MySQL/MariaDB:使用UNIX_TIMESTAMP()函数,字段类型设为INTEGER
    created_at INTEGER NOT NULL DEFAULT UNIX_TIMESTAMP(),
    
  • PostgreSQL:使用EXTRACT(EPOCH FROM NOW())转换为时间戳,字段类型设为INTEGER
    created_at INTEGER NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW())::INTEGER,
    

内容的提问来源于stack exchange,提问作者V E L Δ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:30:36