datetime 数据类型转换 (ODBC)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

以下转换或者已由 ODBC 定义,或者是 ODBC 的一致扩展。 每个访问接口提供的转换由该访问接口所服务的社区决定,因此,各个访问接口之间通常不一致。 方括号中的值是可选的。

  • 日期时间字符串的格式为 'yyyy-mm-dd[ hh:mm:ss[.9999999][ 加/减 hh:mm]]'

  • 时间字符串的格式为 'hh:mm:ss[.9999999]'

  • 日期字符串的格式为 'yyyy-mm-dd'

从字符串转换允许更灵活处理空格和字段宽度。 有关详细信息,请参阅 ODBC 日期和时间改进的数据类型支持中的“数据格式:字符串和文本”部分。

下面是一般的转换规则:

  • 如果未提供时间但接收方可存储时间,则将时间设置为零。

  • 如果不存在日期但接收方可以存储日期,则使用当前日期。

  • 如果客户端正在使用的数据类型中不存在时区,但服务器可以存储时区,则在客户端时区中存储日期。 请注意,此行为与服务器行为不同。

  • 如果服务器类型中不存在时区,但客户端类型具有时区,则先将时间转换为 UTC,再将其存储到服务器。

  • 如果存在时间但接收方无法存储时间,则忽略时间部分。

  • 如果存在日期但接收方无法存储日期,则忽略日期部分。

  • 如果在从 C 转换到 SQL 时截断了秒或秒的小数部分,则生成带有 SQLSTATE 22008 的诊断记录和消息“日期时间字段溢出”。

  • 如果在从 SQL 转换到 C 时截断了秒或秒的小数部分,则生成带有 SQLSTATE 01S07 的诊断记录和消息“截断小数部分”。

本节内容

由 C 转换为 SQL
列出从 C 类型转换为SQL Server数据/时间类型时要考虑的问题。

由 SQL 转换为 C
列出从SQL Server数据/时间类型转换为 C 类型时要考虑的问题。

另请参阅

日期和时间改进 (ODBC)