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

设置字段默认值为current_timestamp加30天的SQL语法问题

问题根因

你写的建表语句报错主要来自两个问题:

  • 拼写错误:将时间关键字current_timestamp错写为cuurent_timestamp,多输入了一个u
  • 语法适配错误:不同数据库的时间计算函数、自增列语法差异极大,直接套用单一数据库的dateadd/addtime写法很容易触发语法错误,且dateadd不是所有数据库都支持的通用函数。
各主流数据库的正确实现

以下是生产环境最常用的几类数据库对应需求的正确建表写法:

  • MySQL 5.7/8.x
    MySQL使用interval关键字做时间偏移,默认值为表达式时必须用括号包裹,Date为SQL保留字建议转义,语句如下:
    CREATE TABLE test (
      Id SERIAL,
      name VARCHAR(10),
      `Date` TIMESTAMP DEFAULT (CURRENT_TIMESTAMP + INTERVAL 30 DAY)
    );
    
  • PostgreSQL
    PostgreSQL同样支持interval时间计算语法,标识符用双引号转义,语句如下:
    CREATE TABLE test (
      Id SERIAL,
      name VARCHAR(10),
      "Date" TIMESTAMP DEFAULT CURRENT_TIMESTAMP + INTERVAL '30 days'
    );
    
  • SQL Server
    SQL Server原生支持DATEADD函数,自增列使用IDENTITY标识而非SERIAL,保留字用方括号转义,修正拼写错误后的语句如下:
    CREATE TABLE test (
      Id INT IDENTITY(1,1) PRIMARY KEY,
      name VARCHAR(10),
      [Date] DATETIME DEFAULT DATEADD(day, 30, CURRENT_TIMESTAMP)
    );
    
  • SQLite
    SQLite使用内置datetime函数做时间偏移,自增列使用AUTOINCREMENT标识,语句如下:
    CREATE TABLE test (
      Id INTEGER PRIMARY KEY AUTOINCREMENT,
      name VARCHAR(10),
      "Date" TIMESTAMP DEFAULT (DATETIME(CURRENT_TIMESTAMP, '+30 days'))
    );
    

内容的提问来源于stack exchange,提问作者Nish7009

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:57:31