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

SQL插入DATE类型数据后查询结果不符问题求助

问题分析与解决方法

核心原因

SQLite 没有原生的 DATE 类型,它的 DATE 属于数值亲和类型。当你直接输入 2014-04-05 而不加单引号时,SQLite 会把它当作算术减法表达式计算(2014 - 4 - 5 = 2005),这就是你看到数值结果的原因。

解决步骤

  1. 正确插入日期
    插入时必须把日期用单引号包裹,作为字符串传入,避免被解析为算术运算:

    INSERT INTO student (STU_STARTDATE) VALUES ('2014-04-05');
    
  2. 查询时格式化输出
    即使正确存储了日期,默认查询可能仍显示为数值或非目标格式,可用日期函数格式化:

    -- 格式化日期字段为YYYY-MM-DD格式
    SELECT *, strftime('%Y-%m-%d', STU_STARTDATE) AS STU_STARTDATE FROM student;
    

    或者直接用DATE()函数转换:

    SELECT *, DATE(STU_STARTDATE) AS FORMATTED_STARTDATE FROM student;
    

额外说明

如果JDoodle使用的是MySQL等其他数据库,原生DATE类型是支持的,但同样要注意插入时用单引号包裹日期字符串,否则也会被当作算术表达式处理。

内容的提问来源于stack exchange,提问作者Natalija Prošić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:27:06