这是表结构:
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| date | datetime | NO | | NULL | |
+-------+----------+------+-----+---------+-------+
有查询在此表中插入日期:
INSERT INTO tbl_temp SET id = 3, date = '1392-01-01';
查询运行成功:
如果我运行查询:
INSERT INTO tbl_temp SET id = 3, date = '1392-02-31';
结果显示值超出范围,所以我如何设置列以获取日期格式的任何值,在这里我可以将列设置为text或varchar,以便它只获取数据,但后来我需要设置一些关于我需要列类型为日期>
的日期的触发器注意:问题是,日期列具有日期类型(因此在公历中)它将采用从(0001-01-01)到(任何)的任何日期,但它必须根据日期格式。在使用hijri的应用程序中,我需要插入hijri日期(1393-02-31),但这是不在格里高利日期范围内的日期)所以它不允许数据到达数据库。
任何将任何日期插入表的mysql列的解决方案 。 问候
答案 0 :(得分:0)
我发现MySQL服务器不支持hijri日期,因此只有两个选项:
应用程序级别自定义:列日期类型,必须是varchar或任何文本,我们从应用程序执行hijri输入,就像输入文本一样,并将其作为文本存储到数据库中,
数据库级自定义:我们必须将数据库保留为公历日期类型,并在应用程序视图中管理日期更改。
截至日期(列类型为日期时间,因此 1392-02-31 的日期不在格里高利日期范围内,因此它将拒绝它并将其保留为空