我现在不熟悉SQL,现在正在学习。我正在使用在Ubuntu 18.04上安装的MySQL。
我有下表:
CREATE TABLE IF NOT EXISTS product(name varchar(255) NOT NULL, availability date NOT NULL);
我想在表中插入以下记录:
INSERT INTO
产物(
名称,
可用性) VALUES ('Title 1', last Wednesday);
执行时出现以下错误:
第21行的错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取在“星期三)附近使用的正确语法”
我了解此格式(“上周三”,“下周” ..)不是标准的日期格式。我想知道是否有可能在MySQL中创建用户定义的类型,以便能够处理这些定制的日期记录。
到目前为止,我在网络上发现的日期仍然包含或多或少包含标准日期格式的日期,而不像上面提到的那样(使用强制转换,解析...)。
当存储在数据库中时,您需要有意义的信息。产品的值“上周三”,则不会提供任何合理的可用性信息。例如,上个星期三从哪个日期开始?如果有人在最后一个星期三但比今天晚2个月要求所有可用产品,那么寻找“最后星期三”的查询将返回什么?绝对无效的结果。因此,如果要存储日期,请使用date / datetime数据类型。您可以通过使用带有varchar数据类型的附加列来添加所需的任何自定义描述,但我不会将其用作主要信息源。