
# 日期类型
[表1]列出了ecpg提供的日期类型(date)数据的常用接口：
 表1日期类型常用接口 
| API接口                                                                     | 接口描述                               | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| date\* PGTYPESdate_new(void)                                              | 返回一个已分配的date变量的指针。                 | 该函数在堆上创建date变量，返回值为date\*类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| void PGTYPESdate_free(date\*)                                             | 释放已经分配date变量的内存。                   | 释放通过PGTYPESdate_free函数创建的date\*类型变量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| date PGTYPESdate_from_asc(char\* str, char\*\* endptr)                    | 从日期的文本表达解析一个日期。                    | 该函数接收一个C的字符串str以及一个指向C字符串的指针endptr。ecpg将文本表达的日期解析为字符串形式。当前不支持将第一个非法字符的地址存储在\*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作为它唯一的参数并且返回一个整数说明这个日期是星期几。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| void PGTYPESdate_today(date\* d)                                          | 得到当前日期。                            | 该函数接收一个指向日期变量（d）的指针并且把该参数设置为当前日期。 - 0：星期日  - 1：星期一  - 2：星期二  - 3：星期三  - 4：星期四  - 5：星期五  - 6：星期六                                                                                                                                                                                                                                          |
| int PGTYPESdate_defmt_asc(date\* d, const char\* fmt, char\* str)         | 使用一个格式掩码把一个C的char\*返回串转换成一个日期类型的值。 | 该函数接收一个用来保存操作结果的指向日期值的指针（d）、用于解析日期的格式掩码（fmt）以及包含日期文本表达的C char\*串（str）。该函数期望文本表达匹配格式掩码。不需要字符串和格式掩码的一一映射。该函数只分析相继顺序并且查找表示年份位置的文字yy或者yyyy、表示月份位置的mm以及表示日位置的dd。注意不能使用中文年月日，例如，七月八日。 合法输入示例如下（fmt,str）： ``` yy/mm/dd 在2525年，7月28号人类仍存活 dd-mm-yy 2525年7月28号 yy/mm/dd 1994, February 3rd ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| int PGTYPESdate_fmt_asc(dat 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-v8-gaussdb/gaussdb-12-0224.html#ZH-CN_TOPIC_0000002558945689)章节。
