在SQL中使用convert函数进行日期的查询

曾经遇到这样的情况 , 在数据库的 Meeting 表中有 PublishTime (DateTime,8) 字段 , 用来存储一个开会时间 , 在存入时由于要指明开会具体时间 , 故格式为 _ yyyy _ - mm-dd hh : mm : ss, 而我们查询时是通过 yyyy-mm-dd 来进行的 , 即查询某一天的所有会议信息 , 这样如果通过 select * from Meeting where PublishTime=@PublishTime ( 参数 @PublishTime 为 yyyy-mm-dd 格式 ) 语句进行查询将无法得到正确结果 , 比如我们要查询 2004 年 12 月 1 日的会议信息 , 在输入 2004-12-01 时就不能得到查询结果 , 而这种查询又不能要求输入具体的 hh:mm:ss.

此时我们需要使用 convert 函数 , 它可以将一种数据类型的表达式转换为另一种数据类型的表达式 . 此处我们先将数据库内的 datetime 类型转换为 char 类型 , 由于输入的参数是 10 位的 , 所以写成

select * from Meeting where convert(varchar(10),PublishTime,121))=@PublishTime, 这样在查询时数据库得到参数后先自动将数据库内的信息转换为 yyyy-mm-dd 格式的 10 位字符 , 只要与参数相同即可返回查询结果 . 而 convert 中的 121 是指将 datetime 类型转换为 char 类型时获得包括世纪位数的 4 位年份
以上是我在开发中遇到的小困难的总结,如果写的有不正确的地方欢迎大家指教!

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus