关于SqlServer中的日期存放格式
为了方便测试,我们用sqlserver2000中的用例数据库来做为测试数据 首先执行 ?出来的结果很明显,是一列日期组成的数据,大部份是1991年开头的,那我就想了,把所有1991年开头的都查出 来,也就是滤掉其它年份,那么我会执行下面语句 心想,这么简单的语句应该不会出什么问题,可结果出来了,竟鬼使神差地什么数据都没查出来,分析原因 (1)难道现在头晕,语句写错了! 鬼话,语句写语了分析能成功吗?推翻之! (2)难道对像列搞错了,检查了N编,没错哦~! (3)难道是微软惊天大Bug,微软出这样的Bug的话早就挂掉了!推翻之! 跟朋友讨论了一个,他给了我这个表,一看,豁然开朗。
| 不带世纪数位 (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
---|