- 论坛徽章:
- 0
|
有这样一个表:table1
Column Type Type
name schema name Length Scale Nulls
------------------------------ --------- ------------------ -------- ----- -----
FIELD1 SYSIBM DATE 4 0 No
FIELD2 SYSIBM CHARACTER 11 0 No
------------------------------------------------------------------------------
select * from table1 fetch first 10 row only
-----------------------------------------------------
FIELD1 FIELD2
------------ -----------
11/01/2004 960568
11/01/2004 168452
11/01/2004 280692
11/01/2004 483678
11/01/2004 109862
11/01/2004 129785
11/01/2004 340937
11/01/2004 907838
11/01/2004 938828
11/01/2004 380862
------------------------------------------------------
然后,我建立一个表table2
Column Type Type
name schema name Length Scale Nulls
------------------------------ --------- ------------------ -------- ----- -----
FIELD1 SYSIBM CHARACTER 12 0 No
FIELD2 SYSIBM CHARACTER 11 0 No
------------------------------------------------------------------------------
把table1的数据导入table2中:insert into table2 select char(field1),field2 from table1
=====================================
注意,这个时候,有趣的事情发生了。
select * from table2 where field1='2004-11-01'
查询不到任何数据?
但是使用
select * from table2 where field1=date('2004-11-01')
可以查询到数据
最后,使用下面的语句查询的时候,也可以得到数据
select * from table2 where field1='11/01/2004'
这个时候,就可以作出这样的推测。
date类型的数据,在表中是mm/dd/yyyy格式存在的,使用类型转换成char类型之后,自然无法使用yyyy-mm-dd格式对照上,date()出来的格式应该也是mm/dd/yyy格式。
======================
以上纯属推测,如果是错误的话,请指正。
只是觉得有趣而已,没什么教育意义,就当骗贴好了.
[/code] |
|