
# 日期类型
[表1]列出了ecpg提供的日期类型（date）数据的常用接口：
 表1日期类型常用接口 
| API接口                                                                      | 接口描述                             | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| date\* PGTYPESdate_new(void)                                               | 请求一个指向新分配的date变量的指针。             | 该函数在堆上创建date\*类型变量，返回值为date\*类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| void PGTYPESdate_free(date \*d)                                            | 释放先前分配的date\*类型变量的内存。            | 该函数释放通过PGTYPESdate_new函数创建的date\*类型变量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| date PGTYPESdate_from_asc(char \*str, char \*\*endptr)                     | 从日期的文本表达解析一个日期。                  | 该函数接收一个字符串str以及一个指向字符串的指针endptr，将字符串形式转换为日期类型。当前不支持将第一个非法字符的地址存储在\*endptr中，可以把endptr设置为NULL。 须知： 该函数假定日期格式按照MDY进行格式化，并且当前在ecpg中没有变体可以改变这种格式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| char\* PGTYPESdate_to_asc(date dDate)                                      | 返回一个日期变量的文本表达。                   | 该函数接收日期dDate作为它的唯一参数。以YYYY-MM-DD格式输出。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| date PGTYPESdate_from_timestamp(timestamp dt)                              | 从一个时间戳中抽取日期部分。                   | 该函数接收一个时间戳作为它的唯一参数并且从这个时间戳返回抽取的日期部分。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| void PGTYPESdate_julmdy(date jd, int \*mdy)                                | 从一个日期类型变量中抽取日、月和年的值。             | 该函数接收日期jd以及一个指向有3个整数值的数组mdy的指针。变量名在这里表明了顺序：mdy\[0\]表示月份，mdy\[1\]表示日期，而mdy\[2\]表示年份。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| void PGTYPESdate_mdyjul(int \*mdy, date \*jdate)                           | 使用指定的整型数值创建日期。                   | 该函数接收3个整数组成的数组mdy作为其第一个参数，三个整数分别用来表示日、月和年。第二个参数是一个指向日期类型变量的指针，它被用来保存操作的结果。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| int PGTYPESdate_dayofweek(date d)                                          | 接收一个日期变量，然后返回一个整数说明这个日期是星期几。     | 该函数接收日期变量d作为它唯一的参数，并且返回一个整数，说明这个日期是星期几。 - 0：星期日  - 1：星期一  - 2：星期二  - 3：星期三  - 4：星期四  - 5：星期五  - 6：星期六                                                                                                                                                                                       |
| void PGTYPESdate_today(date \*d)                                           | 获取当前日期。                          | 该函数用于获取当前日期并将其存储在date类型的变量中。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| int PGTYPESdate_defmt_asc(date \*d, const char \*fmt, char \*str)          | 使用一个格式掩码把一个char\*字符串转换成一个日期类型的值。 | 该函数接收一个用来保存操作结果的指向日期值的指针d、用于解析日期的格式掩码fmt以及包含日期文本表达的char\*字符串str。该函数期望文本表达匹配格式掩码。不需要字符串和格式掩码的一一映射。该函数只分析相继顺序并且查找表示年份位置的yy或者yyyy、表示月份位置的mm以及表示日位置的dd。注意不能使用中文年月日。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| int PGTYPESdate_fmt_asc(date dDate, const char \*fmtstring, char \*outbuf) | 使用一个格式掩码将一个日期类型的变量转换成它的文本表达。     | 该函数接收要转换的日期dDate、格式掩码fmtstring以及将要保存日期的文本表达的字符串outbuf。 成功时，返回0；如果发生报错，则返回一个负值。 合法输入示例如下： ``` 112359            //mmddyy 59/11/23          //yy/mm/dd Nov.23,1959       //mmm.dd,yyyy Mon,Nov.23,1959   //ddd,mmm.dd,yyyy ``` 格式说明： - dd：一个月中的第几天。  - mm：一年中的第几个月。  - yy：两位数的年份。  - yyyy：四位数的年份。  - ddd：星期几的名称（简写）。  - mmm：月份的名称（简写）。   |
   
#### 示例
请参见[典型应用开发示例](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0296.html)章节。
