时间、日期和时间间隔函数
下表列出了 ODBC 标量函数集中包含的时间和日期函数。 应用程序可以通过调用信息类型为 SQL_TIMEDATE_FUNCTIONS 的 SQLGetInfo 来确定驱动程序支持的时间和日期函数。
表示为 timestamp_exp 的参数可以是列的名称、另一个标量函数的结果,也可以是 ODBC-time-escape、 ODBC-date-escape 或 ODBC-timestamp-escape,其中基础数据类型可以表示为SQL_CHAR、SQL_VARCHAR、SQL_TYPE_TIME、SQL_TYPE_DATE或SQL_TYPE_TIMESTAMP。
表示为 date_exp 的参数可以是列的名称、另一个标量函数的结果,也可以是 ODBC-date-escape 或 ODBC-timestamp-escape,其中的基础数据类型可以表示为SQL_CHAR、SQL_VARCHAR、SQL_TYPE_DATE或SQL_TYPE_TIMESTAMP。
表示为 time_exp 的参数可以是列的名称、另一个标量函数的结果,也可以是 ODBC-time-escape 或 ODBC-timestamp-escape,其中基础数据类型可以表示为SQL_CHAR、SQL_VARCHAR、SQL_TYPE_TIME或SQL_TYPE_TIMESTAMP。
ODBC 3.0 中添加了 CURRENT_DATE、CURRENT_TIME 和 CURRENT_TIMESTAMP timedate 标量函数,以便与 SQL-92 保持一致。
函数 | 说明 |
---|---|
CURRENT_DATE ( ) (ODBC 3.0) | 返回当前日期。 |
CURRENT_TIME[ (时间精度) ] (ODBC 3.0) | 返回当前本地时间。 时间精度参数确定返回值的秒精度。 |
CURRENT_TIMESTAMP [ (时间戳精度) ] (ODBC 3.0) |
以时间戳值的形式返回当前本地日期和本地时间。 时间戳精度参数确定返回时间戳的秒精度。 |
CURDATE ( ) (ODBC 1.0) | 返回当前日期。 |
CURTIME ( ) (ODBC 1.0) | 返回当前本地时间。 |
DAYNAME (date_exp) (ODBC 2.0) | 对于使用英语的数据源,返回一个字符串,其中包含数据源特定名称的日期 (例如星期日到星期六或星期日。到星期六;对于使用英语的数据源,返回通过 Samstag 的 Sonntag ,对于使用德语) date_exp的数据源。 |
DAYOFMONTH (date_exp) (ODBC 1.0) | 以 1-31 范围内的整数值返回 date_exp 中的月份字段的月份日期。 |
DAYOFWEEK (date_exp) (ODBC 1.0) | 根据 date_exp 中的周字段返回一周中的某一天,返回为 1-7 范围内的整数值,其中 1 表示星期日。 |
DAYOFYEAR (date_exp) (ODBC 1.0) | 以 1-366 范围内的整数值的形式 ,根据date_exp 中的年份字段返回一年中的某一天。 |
从提取源) 提取 (提取字段 (ODBC 3.0) | 返回提取源的提取字段部分。 extract-source 参数是 datetime 或 interval 表达式。 extract-field 参数可以是以下关键字之一: 年月日小时分钟秒 返回值的精度由实现定义。 小数位数为 0,除非指定 SECOND,在这种情况下,刻度不小于 提取源 字段的小数秒精度。 |
HOUR (time_exp) (ODBC 1.0) | 根据 time_exp 中的小时字段返回为 0-23 范围内的整数值。 |
MINUTE (time_exp) (ODBC 1.0) | 以 0-59 范围内的整数值返回 基于 time_exp 中的分钟字段。 |
MONTH (date_exp) (ODBC 1.0) | 以 1-12 范围内的整数值返回 基于 date_exp 中的月份字段。 |
MONTHNAME (date_exp) (ODBC 2.0) | 返回一个字符串,其中包含数据源特定的月份名称 (例如,1 月到 12 月或 1 月到 12 月,对于使用英语的数据源,返回 Januar 到 Dezember,对于 date_exp的月份部分使用德语) 的数据源。 |
现在 ( ) (ODBC 1.0) | 以时间戳值的形式返回当前日期和时间。 |
季度 (date_exp) (ODBC 1.0) | 以 date_exp 作为 1-4 范围内的整数值返回季度,其中 1 表示 1 月 1 日到 3 月 31 日。 |
SECOND (time_exp) (ODBC 1.0) | 根据 time_exp 中的第二个字段返回第二个,返回为 0-59 范围内的整数值。 |
TIMESTAMPADD (interval, integer_exp, timestamp_exp) (ODBC 2.0) | 返回通过将类型为 interval 的integer_exp间隔添加到 timestamp_exp 计算得出的时间戳。 interval 的有效值是以下关键字: SQL_TSI_FRAC_SECOND SQL_TSI_SECOND SQL_TSI_MINUTE SQL_TSI_HOUR SQL_TSI_DAY SQL_TSI_WEEK SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_YEAR 其中秒的小数部分以十亿分之一秒表示。 例如,以下 SQL 语句返回每个员工的姓名及其一周年纪念日: SELECT NAME, {fn TIMESTAMPADD(SQL_TSI_YEAR, 1, HIRE_DATE)} FROM EMPLOYEES 如果 timestamp_exp 是一个时间值,并且 间隔 指定天、周、月、季度或年,则 timestamp_exp 的日期部分设置为当前日期,然后再计算生成的时间戳。 如果 timestamp_exp 是日期值,并且 interval 指定秒、秒、分钟或小时的小数部分,则 timestamp_exp 的时间部分在计算生成的时间戳之前设置为 0。 应用程序通过使用 SQL_TIMEDATE_ADD_INTERVALS 选项调用 SQLGetInfo 来确定数据源支持的间隔。 |
TIMESTAMPDIFF (interval、 timestamp_exp1timestamp_exp2) (ODBC 2.0) | 返回timestamp_exp2大于timestamp_exp1的间隔类型的整数。 interval 的有效值是以下关键字: SQL_TSI_FRAC_SECOND SQL_TSI_SECOND SQL_TSI_MINUTE SQL_TSI_HOUR SQL_TSI_DAY SQL_TSI_WEEK SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_YEAR 其中秒的小数部分以十亿分之一秒表示。 例如,以下 SQL 语句返回每个员工的姓名以及其已雇用的年数: SELECT NAME, {fn TIMESTAMPDIFF(SQL_TSI_YEAR, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES 如果任一时间戳表达式是时间值,并且 interval 指定天、周、月、季度或年,则计算时间戳之间的差值之前,该时间戳的日期部分将设置为当前日期。 如果任一时间戳表达式是日期值,并且 interval 指定秒、秒、分钟或小时的小数部分,则计算时间戳之间的差值之前,该时间戳的时间部分将设置为 0。 应用程序通过使用 SQL_TIMEDATE_DIFF_INTERVALS 选项调用 SQLGetInfo 来确定数据源支持的间隔。 |
周 (date_exp) (ODBC 1.0) | 根据 date_exp 中的周字段返回一年中的一周,其值为 1-53。 |
年 (date_exp) (ODBC 1.0) | 以整数值的形式 返回基于date_exp 中的年份字段的年份。 该范围依赖于数据源。 |
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈