在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 |