Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何编写SQL命令,自动从等式赋值? 我有一张名为“配料”的表格,具有以下属性: 假设我给它这些值:_Mysql_Sql - Fatal编程技术网

Mysql 如何编写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

我正在尝试创建一个SQL命令,根据原料的保存时间、购买日期和今天的日期自动分配原料的新鲜度

我想用的方程式是:

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