SQLServer的datetime数据类型用来保存时间戳来工作,它是64位长 - http://msdn.microsoft.com/en-us/library/ms187819.aspxC++寻找一个健全的方式与SqlServer的数据类型的datetime
我正在寻找一个健全的方式与它合作C++,可能是boost库中的东西?
谢谢。
编辑
我会满足于能够做这两个操作:
- 显示在一些人类可读的格式的时间,像
2012-01-15 16:54:13.123
- 解析像
2012-01-15 16:54:13.123
串入相应的SqlServer日期时间值。
EDIT2
以下是我知道到现在为止。我有一个datetime
列的表格。当我从中选择行时,我得到这个列的数据类型为DBTYPE_DBTIMESTAMP
。据http://msdn.microsoft.com/en-us/library/ms187819.aspx它应该是一个8字节的值,但是,我得到一个16字节的值,例如:
00070015000c07db 00000000001f0007
我找不到这种格式的任何说明,但研究揭示了以下结构:
0007 0015 000c 07db 00000000 001f 0007
^ ^^^ ^^
| | | | | |
| | | | | +--- minutes (7)
| | | | +----+--- seconds (31)
| | | +-------------+----+--- year (2011)
| | +----+-------------+----+--- month (12)
| +----+----+-------------+----+--- day (21)
+----+----+----+-------------+----+--- hour (7)
对应于2011-12-21 07:07:31
。所以,这似乎很容易,但文档在哪里? DBTYPE_DBTIMESTAMP
值是否始终以此格式报告?是否SqlSever CE特定或Express和其他口味是否一样?它可以包含毫秒?
顺便说一句,我使用OLEDB访问数据库。
有作为“理智的方式”没有这样的事用C++时,这就是为什么大家都喜欢它:)? – ScarletAmaranth 2012-01-15 14:45:30
查看更新。 – mark 2012-01-15 14:57:15
根据http://msdn.microsoft.com/en-us/library/bb677303.aspx MS SqlServer没有'TimeStamp'数据类型。 OLEDB名称为'DBTYPE_DBTIMESTAMP',它对应于SqlServer数据类型的'datetime'系列。 – mark 2012-01-16 08:48:55