SqlServer数据库中,日期的模糊查询

情况是这样的:
要查出表中日期为某年某月的数据,查询条件是字符型,表中日期的字段类型为date 值为 例:2007-01-05 00:00:00.000

仅模糊查某年的数据是可以的;
例: select * from A where 日期 like '%2007%'

但是 要查某年某月的就不可以了 select * from A where 日期 like '%2007-01%'
请问高手该怎么办? 谢谢!

1、先打开SQL Server数据库并连接。

2、然后找到目标数据库,右键并点击“属性”。

3、在弹出的属性窗口左侧“选择页”中选择“文件”选项卡。

4、然后在右侧窗体中即可看到相应内容了:逻辑名称是数据文件及日志文件的文件名,路径就是其所在位置了。

5、如图,就是相应的.mdf和.ldf文件。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-28

1、打开SQL Server Management Studio管理工具,点击【新建查询】,新建一个SQL书写窗口,用于演示SQL的执行。

2、获取SQLServer中的最小日期(1900-01-01 00:00:00.000)。

3、获取明年的今天,含时间的日期,select DATEADD(year, 1, getdate())。

4、获取明年的今天距离SQLServer最小日期之间差了多少年。

5、计算SQLServer最小日期的前一天日期,不含时间。

6、计算当年最后一天0点日期:SQLServer最小年的前一天,加上当前日期的下一年距离最小日期的年份差即可。

本回答被网友采纳
第2个回答  推荐于2017-11-25
将数据库中的时间字段格式改为字符串格式。

SELECT * FROM T WHERE Convert(varchar,sendTime,120) LIKE '2007-12-30%'

其中:T为数据库的表,sendTime是数据库中的时间字段的字段名。这样就可以查询2007-12-30的记录了。本回答被提问者采纳
第3个回答  2012-12-13
年可以用函数year(日期)=2007
某年某月可以分开查year(日期)=2007 and month(日期)=1
或者转换格式CONVERT(varchar(7), 日期, 23)='2007-01'
第4个回答  2012-12-13
直接convert后进行等值判断,不需要like

select * from A CONVERT(varchar(7), 日期, 120) = '2007-01'
相似回答