SqlServer 日期时间数据类型用于保存时间戳,长度为 64 位 - http://msdn.microsoft.com/en-us/library/ms187819.aspx
我正在寻找一种在 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 访问数据库。
最佳答案
为什么不在 sql-server 端处理这些东西?
您可以编写一个 View ,返回 DBTYPE_DBTIMESTAMP 作为 datetime 或 varchar。您可以定义所需的格式。
Use the cast()- or convert()- Function
要写回值,您可以写一个小函数,也在 sql-server 上。 您可以使用以下功能:
Convert(datetime, [value], [format])
关于c++ 寻找一种安全的方法来处理 Sql Server 数据类型 datetime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8870523/