在sql server中,日期型字段,在数据库中默认是以类似"年-月-日 时:分:秒"的格式存在的,但若直接转换为字符串的话则会类似这样的格式"07 25 2007 4:58PM",如果我们需要查询时查询日期等于当天的记录,则应该这样写
select * from table where convert(char,service_date,111) = convert(char,getdate(),111)
这里service_date为时间字段的名字,convert(char,service_date,111),则将service_date字段转化为类似"2007/07/25"这样的字符串格式,如果我们想要转化为类似''2007-07-25''这样的格式,则可以再用sqlserver的replace函数替换一下,把其中的"/"替换成"-"即可.即replace(convert(char,service_date,111),''/'',''-'')这样即可转换成我们常用的类似''2007-07-25''的格式了。
关于用convert函数转换日期时间,附录如下:
不带世纪数位 (yy) 带世纪数位 (yyyy) 标准 输入/输出**
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)
1 101 美国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM