测试的表结构数据如下

其中“OrderDate”,“RequiredDate”和“ShippedDate”三个字段的格式是datetime格式

这种格式下,直接用like进行日期的模糊查询是没有结果的

我们可以使用convert()来转换datetime成varchar
CONVERT(varchar,OrderDate,21)
#CONVERT(A,B,C):A代表目标格式,B代表要对象列,C这里代表日期的格式
下表部分规范
| 不带世纪数位(yy) | 带世纪数位(yyyy) | Standard | 输入/输出 |
|---|---|---|---|
| - | 0或100 | datetime和smalldatetime的默认值 | mon dd yyyy hh:miAM (或PM) |
| 1 | 1或101 | 美国 | 1=mm/dd/yy 101=mm/dd/yyyy |
| - | 20或120 | ODBC规范 | yyyy-mm-dd hh:mi:ss(24h) |
| - | 21或121 | time,date,datetime2和datetimeoffset的ODBC规范(带毫秒)默认值 | yyyy-mm-dd hh:mi:ss.mmm(24h) |
| … | … | … | … |
完整表格及更多的信息,请参考官方文档
现在,用这方法来筛选97年12月的数据
SELECT
*
FROM
Orders
WHERE
CONVERT(varchar,OrderDate,21) LIKE '%1997-12%'
结果如下图

本文介绍如何在SQL中使用CONVERT函数将datetime格式转换为varchar,以便进行日期的模糊查询。通过具体示例,展示了筛选特定年份月份数据的方法。
2986

被折叠的 条评论
为什么被折叠?



