如何解决SQL编码中的日期间隔
我有一个如下表:
Creationdate Priority interval
10/10/2020 P0 1
7/10/2020 P1 7
我想将间隔添加到每个日期。例如,如果优先级为p0,那么creationdate + 1,
问题是日期存储为字符串。如何获得结果?
解决方法
首先使用STR_TO_DATE
函数将字符串转换为日期。
SELECT STR_TO_DATE('10/10/2020','%m/%d/%y') + INTERVAL 1 DAY;
So
SELECT STR_TO_DATE(creationdate,'%m/%d/%y') + INTERVAL 1 DAY;
因此,如果您要更新查询,
UPDATE table_name
SET creationdate = STR_TO_DATE(creationdate,'%m/%d/%y') + INTERVAL 1 DAY
WHERE Priority = 'P0';
,
要将字符串转换为日期,请检查以下答案:
how to convert a string to date in mysql?
考虑到您正在使用mssql服务器。 您可以使用: DATEADD(间隔,数字,日期)
例如:
-
SELECT DATEADD(year,1,'2017/08/25') AS DateAdd;
将添加1年的日期, -
SELECT DATEADD(date,'2017/08/25') AS DateAdd;
将添加1天的日期。
考虑到您正在使用MySQL:
语法:
DATE_ADD(date,INTERVAL value addunit)
例如:
SELECT DATE_ADD("2017-06-15",INTERVAL 1 DAY);
将添加1天的日期。
,您可以将字符串转换为日期,然后使用日期算术。考虑:
select t.*,str_to_date(creationdate,'%d/%m/%Y') + interval intval day enddate
from mytable t
注意:
-
您的样本数据关于日期的格式不明确:它可能是
%d/%m/%Y
或%m/%d/%Y
-
interval
对于列名是一个不错的选择,因为它与SQL关键字interval
(在MySQL中是reserved word)冲突;我在查询中重命名了列intval
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。