mysqlsql⽇期模糊_sql根据⽇期模糊查询SQLServerdateTime
类型模糊查询
曾经遇到这样的情况,在数据库的Meeting表中有PublishTime (DateTime,8)字段,⽤来存储⼀个开会时间,在存⼊时由于要指明开会具体时间,故格式为yyyy-mm-dd hh:mm:ss,⽽我们查询时是通过yyyy-mm-dd来进⾏的,即查询某⼀天的所有会议信息,这样如果通过lect *
releanotesfrom Meeting where PublishTime=@PublishTime (参数@PublishTime为yyyy-mm-dd格式)语句进⾏查询将⽆法得到正确结果,⽐如我们要查询2004年12⽉1⽇的会议信息,在输⼊2004-12-01时就不能得到查询结果,⽽这种查询⼜不能要求输⼊具体的hh:mm:ss.
此时我们需要使⽤convert函数,它可以将⼀种数据类型的表达式转换为另⼀种数据类型的表达式.此处我们先将数据库内的datetime类型转换为char类型,由于输⼊的参数是10位的,所以写成
lect * from Meeting where convert(varchar(10),PublishTime,121))=@PublishTime,这样在查询时数据库得到参数后先⾃动将数据库内的信息转换为yyyy-mm-dd格式的10位字符,只要与参数相同即可返回查询结果.⽽convert中的121是指将datetime类型转换为char 类型时获得包括世纪位数的4位年份(转载)
⽇期格式的like模糊查询真的好怪,在⼀个项⽬中,我试了很多种查法:
葛底斯堡演说
lect * from T where ndTime like '%2007_12_%' 可以查询2007年12⽉的所有记录
如果like条件改为'%2007-12-%' ,'%2007_12_3%' ,或'%2007_12_30%' 都查不出数据。还有:
lect * from T where ndTime like '%12_30%' 可以查询12⽉30⽇的所有记录
保税区英文如果like条件改为'%07_12_30%' 也查不出数据。
⼀直搞不明⽩是怎么回事。不过现在找到了⼀个很好的解决⽅法:
将数据库中的时间字段格式改为字符串格式。什么事英文
ontheradioSELECT * FROM T WHERE Convert(varchar,ndTime,120) LIKE '2007-12-30%'
英语初级培训学校
其中:T为数据库的表,ndTime是数据库中的时间字段的字段名。这样就可以查询2007-12-30的记录了。吴彦祖魔兽
铭牌英文
顺便把SQL Server中Convert函数的⽤法贴出来。
u CitrixSmartAuditor
四级官网准考证打印
lect b.Name,COUNT(*) from ICLFile a,rver b
where Convert(varchar,StartTime,120) LIKE '2019-08-22%'
and a.ServerID = b.ID
group by b.Name扼腕
order by b.Name