Mysql 如何编写SQL命令,自动从等式赋值? 我有一张名为“配料”的表格,具有以下属性: 假设我给它这些值:
我正在尝试创建一个SQL命令,根据原料的保存时间、购买日期和今天的日期自动分配原料的新鲜度 我想用的方程式是:Mysql 如何编写SQL命令,自动从等式赋值? 我有一张名为“配料”的表格,具有以下属性: 假设我给它这些值:,mysql,sql,Mysql,Sql,我正在尝试创建一个SQL命令,根据原料的保存时间、购买日期和今天的日期自动分配原料的新鲜度 我想用的方程式是: freshness = 100 - ((today - ing_bought) / preserve_time) * 100** 我可以这样做,但这不是我想要的,因为我不知道如何自动获取今天的日期,也不知道如何仅转换ing_购买的日期,其数据类型为日期: update Ingredients set freshness = 100 - (((30-20) / preserve_tim
freshness = 100 - ((today - ing_bought) / preserve_time) * 100**
我可以这样做,但这不是我想要的,因为我不知道如何自动获取今天的日期,也不知道如何仅转换ing_购买的日期,其数据类型为日期:
update Ingredients set freshness = 100 - (((30-20) / preserve_time) * 100
where ing_id = 1;
所以我想知道,因为我是数据库概念&MYSQL的新手,是否有一个命令将当前日期作为int表示&如何仅从date数据类型获取日期并将其转换为int,以便我可以计算它?假设您可以使用以下更新语句:
现在,输入当前日期。
DATEDIFF函数,给出两个日期的天数差。
代码:
然后您可以按如下方式查看结果:
Select *, DATE(NOW()) as today, DATEDIFF(now(), ing_bought) as days from Ingredients
[结果]:
[编辑:]
活生生的例子
create table Ingredients (ing_id int not null,
ing_name varchar(40), preserve_time int, ing_bought date, freshness int,
primary key (ing_id));
insert into Ingredients values (1, "Meat", 18, "2020-10-20", null);
dbfiddle假设您可以使用以下更新语句:
现在,输入当前日期。
DATEDIFF函数,给出两个日期的天数差。
代码:
然后您可以按如下方式查看结果:
Select *, DATE(NOW()) as today, DATEDIFF(now(), ing_bought) as days from Ingredients
[结果]:
[编辑:]
活生生的例子
create table Ingredients (ing_id int not null,
ing_name varchar(40), preserve_time int, ing_bought date, freshness int,
primary key (ing_id));
insert into Ingredients values (1, "Meat", 18, "2020-10-20", null);
dbfiddle除了上面提到的问题,如果您指的是MySQL或SQLServer,我建议在此表上定义一个视图-这种方法可以使用当前日期进行计算。除了上面提到的问题,如果您指的是MySQL或SQLServer,我建议在此表上定义一个视图-这种方法可以使用当前日期。谢谢!这正是我想要的。@WhitePuzzle,好的。因此,您可以将其标记为选定答案。谢谢!这正是我想要的。@WhitePuzzle,好的。因此,您可以将其标记为选定答案。
create table Ingredients (ing_id int not null,
ing_name varchar(40), preserve_time int, ing_bought date, freshness int,
primary key (ing_id));
insert into Ingredients values (1, "Meat", 18, "2020-10-20", null);
✓
✓
select * from Ingredients
ing_id | ing_name | preserve_time | ing_bought | freshness
-----: | :------- | ------------: | :--------- | --------:
1 | Meat | 18 | 2020-10-20 | null
update Ingredients set freshness = 100 - (DATEDIFF(now(), ing_bought) / preserve_time) * 100
where ing_id = 1;
✓
select *, DATE(NOW()) as today, DATEDIFF(now(), ing_bought) as days from Ingredients
ing_id | ing_name | preserve_time | ing_bought | freshness | today | days
-----: | :------- | ------------: | :--------- | --------: | :--------- | ---:
1 | Meat | 18 | 2020-10-20 | 6 | 2020-11-06 | 17