c++ 寻找一种安全的方法来处理 Sql Server 数据类型 datetime

标签 c++ sql-server datetime

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/

相关文章:

c++ - 为什么我的列表上的迭代失败?

sql-server - SQL Server 中的时间格式

c# - sqlite 数据库中的 EntityFramework 核心格式 DateTime

ruby-on-rails - 给定一个 DateTime,如何获取特定时区中具有相同日期的时间范围?

c++ - 实现 "static observer pattern"

c++ - 有没有办法重用 valgrind 抑制文件?

c++ - 将字符串转换为 C 风格的字符串

sql-server - 复制过滤后的数据子集 : Merge or Transactional replication?

sql - SQL Server 中一行中所有列值的总和

javascript - Javascript 中的 Date.now 和 Date.getTime 有什么区别以及时区如何影响它们?