在MySQL中创建表时不确定如何使用monthname
函数。我所要做的就是在A列中输入时,然后B列应根据A栏中的输入用单词填写月份名称。
我使用一个简单的html表单将值发布到MySQL。 用户填写HTML数据,如姓名,Orderno,订单日期,数量和项目名称。
这些值将发布到MySQL表orderdata。 MySQL表包含id,name,orderno,order_date,order_month,quantity和item_name等列。
希望order_month列根据order_date自动填充月份名称。
以下是我尝试的语法
create table orderdata (id int, order_date date, order_month DEFAULT ON UPDATE MONTHNAME(order_date),quantity int,item_name varchar(50));
错误1064(42000):您的SQL语法有错误;检查 手册,对应右边的MySQL服务器版本 在'DEFAULT ON UPDATE MONTHNAME(order_date)附近使用的语法,数量 第1行的int,item_name varchar(50))'
create table orderdata (id int, order_date date, order_month UPDATE test.orderdata SET month= MONTHNAME(order_date),quantity int,item_name varchar(50));
错误1064(42000):您的SQL语法有错误;检查 手册,对应右边的MySQL服务器版本 在'UPDATE test.orderdata SET month =附近使用的语法 MONTHNAME(order_date),数量int,第1行的item_name va'
任何帮助使人们非常感激
谢谢
答案 0 :(得分:1)
如果您使用的是MySQL 5.7.6或更高版本,则可以使用生成的列并在没有触发器的情况下执行此操作。
创建表格
CREATE TABLE orderdata (
id INT
, order_date DATE
, order_month VARCHAR(50) AS (MONTHNAME(order_date)) #generated column
, quantity INT
, item_name VARCHAR(50)
);
插入查询。
INSERT INTO orderdata (id, order_date, quantity, item_name) VALUES(1, '2016-12-25', 1, 'item 1');
<强>结果强>
SELECT * FROM orderdata;
id order_date order_month quantity item_name
------ ---------- ----------- -------- -----------
1 2016-12-25 December 1 item 1
答案 1 :(得分:0)
您正尝试在表定义中添加触发器的作业。
基本上,你的桌子的创作应该是:
CREATE TABLE orderdata
(id INT, order_date DATE, order_month VARCHAR(15), quantity INT, item_name VARCHAR(50));
根据MySQL Trigger文档,您将拥有以下触发器来实现您的目的:
DELIMITER $$
USE `<DATABASE-NAME>`$$
CREATE DEFINER = CURRENT_USER TRIGGER `<DATABASE-NAME>`.`orderdata_BEFORE_INSERT`
BEFORE INSERT ON `orderdata` FOR EACH ROW
BEGIN
SET NEW.order_month = MONTHNAME(NEW.order_date);
END $$
DELIMITER ;
然后,当您执行任何给定的INSERT
时,它会自动为您添加月份。
示例:
INSERT INTO `orderdata`(`id`, `order_date`, `order_month`, `quantity`, `item_name`)
VALUES (3,NOW(),NULL,23,'First order');
结果是: