
# 时间戳类型
[表1]列出了ecpg提供的时间戳(timestamp)数据的常用接口：
 表1时间戳类型常用接口 
| API接口                                                                                   | 接口描述                               | 说明                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|
| timestamp PGTYPEStimestamp_from_asc(char \*str, char \*\*endptr)                        | 从文本解析一个时间戳并放到一个时间戳变量中。             | 该函数接收一个解析(str)字符串和指向C char\*(endptr)指针。成功时函数返回解析的时间戳，产生错误时返回PGTYPESInvalidTimestamp，并且设置errno为PGTYPES_TS_BAD_TIMESTAMP。 PGTYPEStimestamp_from_asc的合法输入如下所示： ``` 1999-01-08 04:05:06 January 8 04:05:06 1999 PST 1999-Jan-08 04:05:06.789-8    1999-01-08 04:05:06.789 （忽略了时区指示符） J2451187 04:05-08:00    1999-01-08 04:05:00 （忽略了时区指示符） ``` |
| char \*PGTYPEStimestamp_to_asc(timestamp tstamp)                                        | 将日期转换成char\*字符串。                   | 该函数接收时间戳tstamp作为它的唯一参数并且返回一个分配好的包含该时间戳文本表达式的字符串。结果必须用PGTYPESchar_free()释放。                                                                                                                                                                                                                                                                                                                                             |
| void PGTYPEStimestamp_current(timestamp \*ts)                                           | 获取当前时间戳。                           | 该函数获取当前时间戳，并且将它保存到ts指向的时间戳变量中。                                                                                                                                                                                                                                                                                                                                                                                         |
| int PGTYPEStimestamp_fmt_asc(timestamp \*ts, char \*output, int str_len, char \*fmtstr) | 使用一个格式掩码将一个时间戳变量转换成一个 char\* 。     | 该函数接收一个指向时间戳的指针（ts）、一个指向输出缓冲区的指针（output）、一个为输出缓冲区分配的最大长度（str_len）以及用于转换的格式掩码（fmtstr）作为参数。 成功时，该函数返回0；如果有错误发生，则返回一个负值。                                                                                                                                                                                                                     |
| int PGTYPEStimestamp_sub(timestamp \*ts1, timestamp \*ts2, interval \*iv)               | 从一个时间戳中减去另一个时间戳并且把结果保存在一个区间类型的变量中。 | 该函数将从ts1指向的时间戳变量中减去ts2指向的时间戳变量，并且将把结果存储在iv指向的区间变量中。 成功时，该函数返回0；发生错误时则返回一个负值。                                                                                                                                                                                                                                                                |
| int PGTYPEStimestamp_defmt_asc(char \*str, char \*fmt, timestamp \*d)                   | 用一个格式掩码从时间戳的文本表达解析其值。              | 该函数接收一个放在变量str中的时间戳文本表达以及放在变量fmt中要使用的格式掩码。结果将被存放在d指向的变量中。 如果格式掩码fmt是NULL，该函数将回退到使用默认的格式掩码%Y-%m-%d %H:%M:%S。                                                                                                                                                                                                                                |
| int PGTYPEStimestamp_add_interval(timestamp \*tin, interval \*span, timestamp \*tout)   | 把一个interval变量加到一个时间戳变量上。           | 该函数接收一个指向时间戳变量的指针tin以及一个指向interval变量的指针span。它把interval加到时间戳上，然后将结果时间戳保存在tout指向的变量中。 成功时该函数返回0，如果发生错误则返回一个负值。                                                                                                                                                                                                                              |
| int PGTYPEStimestamp_sub_interval(timestamp\* tin, interval\* span, timestamp\* tout)   | 从一个timestamp时间戳变量中减去interval变量。    | 该函数从tin指向的时间戳变量中减去span指向的interval变量，然后把结果保存在tout指向的变量中。 成功时该函数返回0，如果发生错误则返回一个负值。                                                                                                                                                                                                                                                         |
   
#### 示例
请参见[常用示例](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0224.html#ZH-CN_TOPIC_0000002558945689)章节。
