当我将数据从文件加载到db2数据库时,时间戳数据类型中只有日期部分,db2会自动在其中添加时间细节吗

当我将数据从文件加载到db2数据库时,时间戳数据类型中只有日期部分,db2会自动在其中添加时间细节吗,db2,Db2,当我将数据从文件加载到db2数据库中时,时间戳数据类型中只有日期部分,db2会自动在其中添加时间细节 我有一个只有日期格式的文件。仍然加载了数据,但查询数据时有默认时间段,如10/22/1969 12:00:00.000000 AM? 这是默认的吗 时间戳格式包括日期和时间,因此在内部,它必须存储为二进制结构,包含的数据比日期多,请参见: db2 "describe values current date" Column Information Number of columns: 1

当我将数据从文件加载到db2数据库中时,时间戳数据类型中只有日期部分,db2会自动在其中添加时间细节

我有一个只有日期格式的文件。仍然加载了数据,但查询数据时有默认时间段,如10/22/1969 12:00:00.000000 AM?
这是默认的吗

时间戳
格式包括日期和时间,因此在内部,它必须存储为二进制结构,包含的数据比日期多,请参见:

db2 "describe values current date" 

 Column Information

 Number of columns: 1

 SQL type              Type length  Column name                     Name length
 --------------------  -----------  ------------------------------  -----------
 384   DATE                     10  1                                         1
vs

您甚至可以使用以下函数逐字节检查实际结构:

db2 "values hex(date(current timestamp))"

1       
--------
20191013

db2 "values hex(timestamp(current timestamp))"

1                   
--------------------
20191013090443204348
根据使用的实用程序,Db2将隐式地将值转换为时间戳目标。使用LOAD,您可以查看以查看默认接受的格式

假设使用Db2 LUW,我使用以下工具进行了快速测试:

db2 "create table timestamp_load_test(c1 int, c2 timestamp)"
echo "1,2019-10-13-09.00.00.000000" >> data.del
echo "2,2019-10-13-09.00.00"        >> data.del
echo "3,2019-10-13-09.00"           >> data.del
echo "4,2019-10-13"                 >> data.del

db2 "load from data.del of del replace into timestamp_load_test nonrecoverable"
...
SQL0180N  The syntax of the string representation of a datetime value is 
incorrect.  SQLSTATE=22007
SQL3185W  The previous error occurred while processing data from row "F0-3" of 
the input file.
...
Number of rows read         = 4
Number of rows skipped      = 0
Number of rows loaded       = 3
Number of rows rejected     = 1
Number of rows deleted      = 0
Number of rows committed    = 4
如我们所见,接受了3行:

db2 "select * from timestamp_load_test"

C1          C2                        
----------- --------------------------
          1 2019-10-13-09.00.00.000000
          2 2019-10-13-09.00.00.000000
          4 2019-10-13-00.00.00.000000

当然,它们是以时间段显示的,但实际的格式将取决于所使用的客户端。

运行Db2服务器的操作系统是什么?Z/OS、i系列、Linux/Unix/Windows?对于Linux/Unix/Windows上的Db2,时间戳的时间部分的默认值为全零(而不是您显示的12.00.00.000000)。您使用什么工具加载数据?@mao 12:00 AM是00:00,即全零。@mustacio Doh!我没有看到我。
db2 "select * from timestamp_load_test"

C1          C2                        
----------- --------------------------
          1 2019-10-13-09.00.00.000000
          2 2019-10-13-09.00.00.000000
          4 2019-10-13-00.00.00.000000