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

如何将VARCHAR类型的yyyy-mm格式数据转换为日期类型?

处理VARCHAR(7)格式日期列的查询问题

快速解决:补全日后缀或直接字符串比对

你的MONTH列是yyyy-mm格式的字符串,要转成日期格式很简单——直接拼接-01补全日部分,就能用CONVERT转换为合法日期:

SELECT * FROM TABLE_X 
WHERE CONVERT(DATE, MONTH + '-01') BETWEEN '2022-06-01' AND '2023-06-01'

其实还有更省事的方式:因为yyyy-mm的字符串本身是按时间顺序排列的,直接做字符串范围比对就行,不需要转换日期。另外你原来的BETWEEN语法有误,正确写法是:

SELECT * FROM TABLE_X 
WHERE MONTH BETWEEN '2022-06' AND '2023-06'

长期优化:修改列类型

如果这个表频繁做日期相关查询,建议把MONTH列改成DATE类型,避免每次查询都做字符串转换,提升效率。步骤如下:

  1. 先给现有数据补全日部分:
UPDATE TABLE_X SET MONTH = MONTH + '-01';
  1. 修改列类型:
ALTER TABLE TABLE_X 
ALTER COLUMN MONTH DATE;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:09:51