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

SQLite中如何将员工生日转换为当月第一天的日期?

解决SQLite中获取员工生日所在月份第一天的问题

你的问题出在对SQLite日期函数的用法理解上:

  • 原代码中DATE(STRFTIME('%m'), 'start of month')只提取了月份,缺少年份信息,SQLite无法将单独的月份解析为有效日期,因此返回默认的-4713-12-01。
  • 尝试的DATE(STRFTIME('%Y-%m'), 'start of month')返回Null,是因为STRFTIME('%Y-%m')生成的YYYY-MM格式不是DATE函数能直接处理的完整日期字符串。

下面是两种正确的实现方式:

方法一:直接用STRFTIME拼接目标格式

直接提取生日的年份和月份,拼接-01得到当月第一天:

SELECT
  FirstName || ' ' || LastName AS [Full Name],
  STRFTIME('%Y-%m-%d', BirthDate) AS [Birthday No Timecode],
  STRFTIME('%Y-%m-01', BirthDate) AS [Celebrated on]
FROM
  employees;

方法二:用DATE函数的start of month修饰符

利用DATE函数的内置修饰符,直接将生日日期转换为当月第一天:

SELECT
  FirstName || ' ' || LastName AS [Full Name],
  STRFTIME('%Y-%m-%d', BirthDate) AS [Birthday No Timecode],
  DATE(BirthDate, 'start of month') AS [Celebrated on]
FROM
  employees;

两种方法都能正确返回年-月-01格式的结果,比如对于Andrew Adams的生日1962-02-18,会返回1962-02-01。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:27:03