Php MySQL默认日期();14天,一个专栏?
我想知道下面的内容是否可以通过MySQL实现,或者是否必须使用PHP实现 任务-“到期日”Php MySQL默认日期();14天,一个专栏?,php,mysql,date,default-value,Php,Mysql,Date,Default Value,我想知道下面的内容是否可以通过MySQL实现,或者是否必须使用PHP实现 任务-“到期日” 用户输入产品名称 用户单击提交表单按钮 数据被发布,然后发送到MySQL 到期日=现在的日期+14天 我试图实现的是mysql在一个表列中插入一个“expiration_date”的方法,它将等于在该表中创建行的日期后14天 CREATE TABLE product( product_id INT PRIMARY KEY, product VARCHAR(40), entryDat
CREATE TABLE product(
product_id INT PRIMARY KEY,
product VARCHAR(40),
entryDate DATETIME,
expDate DATETIME
);
CREATE TRIGGER test_trigger BEFORE INSERT ON `product`
FOR EACH ROW SET
NEW.entryDate = IFNULL(NEW.entryDate, NOW()),
NEW.expDate = TIMESTAMPADD(DAY, 14, NEW.entryDate);
e、 g
我有一种感觉,除非使用存储过程,否则在mysql中可能无法实现
我很高兴用PHP来做这件事,但是我希望如果我能用mysql来做的话,我的系统中会留下更少的错误空间
谢谢
或者如前所述,将该字段的表结构(该字段的属性=)更改为“更新当前时间戳”您可以通过使用MySQL中的
DateTime
方法来使用它:
DATE_ADD(date_starts,INTERVAL 14 DAY)
例如:
UPDATE events SET date_starts = DATE_ADD(date_starts,INTERVAL 14 DAY) WHERE event_id = 3;
有关更多详细信息,请转到。您可以尝试此功能
DATE\u ADD(现在(),间隔14天)代码>根据这一点,您不能将表达式用作默认说明符
因此,不确定自发布错误以来是否发生了更改
但是,我不确定为什么我假设OP想要将其定义为默认值。我相信MySQL不允许您在默认值中使用表达式。你可能想写一个触发器
MySQL确实提供了一个时间戳数据类型,当创建或更新一行时,该数据类型可以设置为当前时间戳。您可能会发现此功能有些有用:
一旦确定MySQL按预期填充了该列,就可以编写如下查询:
SELECT `Created`, `Created` + INTERVAL 14 DAY AS `expiry_date`
FROM table1
创建一个表并设置该表的触发器
CREATE TABLE product(
product_id INT PRIMARY KEY,
product VARCHAR(40),
entryDate DATETIME,
expDate DATETIME
);
CREATE TRIGGER test_trigger BEFORE INSERT ON `product`
FOR EACH ROW SET
NEW.entryDate = IFNULL(NEW.entryDate, NOW()),
NEW.expDate = TIMESTAMPADD(DAY, 14, NEW.entryDate);
每次向表中插入时,触发器将entryDate
设置为当前时间,将expDate
设置为14天时间。最简单的解决方法就是插入所需的值-无需触发器或以后的更新,例如
INSERT INTO <your_table> (name, expiry_date) VALUES ('foo', DATE_ADD(CURRENT_TIMESTAMP,INTERVAL 7 DAY))
插入(名称、到期日)值('foo',日期\u添加(当前时间戳,间隔7天))
我更喜欢这种格式:
SELECT NOW()+INTERVAL 14 DAY
你可以使用触发器。当你插入时,只需在输入日期上加上14天(我想是现在(),然后将其与插入查询一起传递会不会更简单?@JaspreetChahal,不,因为我需要一个开始日期和结束日期来确定某个内容是否已过期,作为错误预防的故障保护谢谢,从来都不知道date_add()函数!:)我不想使用时间戳,因为它不如DATETIME好,但要感谢创建表
中的错误,而不是插入
INSERT INTO <your_table> (name, expiry_date) VALUES ('foo', DATE_ADD(CURRENT_TIMESTAMP,INTERVAL 7 DAY))
SELECT NOW()+INTERVAL 14 DAY