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

如何在SQL插入语句中为日期字段插入含时分秒的完整时间数据

插入带时分秒日期的解决方案

前置检查

首先确认lease_rent_receipts表的due_date字段为支持时分秒的日期类型:

  • MySQL:DATETIME/TIMESTAMP
  • PostgreSQL:TIMESTAMP/TIMESTAMPTZ
  • Oracle:DATE(Oracle原生DATE类型自带时分秒)
  • SQL Server:DATETIME/DATETIME2
    如果字段为仅存日期的类型(如MySQL的DATE),需先修改字段类型,否则无法保存时分秒信息。

方案1:l_due_date为日期类型变量

如果变量本身已包含时分秒信息,直接沿用现有插入语句即可,数据库会自动保留完整时间。
如果变量仅含日期部分,需先给变量拼接指定时分秒,不同数据库的处理逻辑如下:

  • MySQL
SET l_due_date = STR_TO_DATE(CONCAT(DATE_FORMAT(l_due_date, '%d/%m/%Y'), ' 08:05:25'), '%d/%m/%Y %H:%i:%s');
  • PostgreSQL
l_due_date := l_due_date::DATE + INTERVAL '08:05:25';
  • Oracle
l_due_date := TRUNC(l_due_date) + INTERVAL '08:05:25' HOUR TO SECOND;
  • SQL Server
SET @l_due_date = DATEADD(SECOND, 25, DATEADD(MINUTE, 5, DATEADD(HOUR, 8, CAST(CAST(@l_due_date AS DATE) AS DATETIME))));

方案2:直接插入固定时间字符串

不需要调整变量,直接在VALUES中写入带时分秒的时间即可,示例语句(以你需要的10/10/2021 08:05:25为例):

INSERT INTO lease_rent_receipts
(billing_start_date, billing_end_date,
charge_category, due_amount,
due_date, client_id,total_payable, description)
VALUES (l_billing_start_date,l_billing_end_date,l_charge_category, l_due_amount,
STR_TO_DATE('10/10/2021 08:05:25', '%d/%m/%Y %H:%i:%s'), 
l_client_id,l_total_payable, l_description);

以上为MySQL写法,其他数据库对应替换字符串转日期函数即可:

  • PostgreSQL:TO_TIMESTAMP('10/10/2021 08:05:25', 'DD/MM/YYYY HH24:MI:SS')
  • Oracle:TO_DATE('10/10/2021 08:05:25', 'DD/MM/YYYY HH24:MI:SS')
  • SQL Server:CONVERT(DATETIME, '10/10/2021 08:05:25', 103)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:48:01