如何从表格中的日期列中减去15天?

时间:2014-01-17 11:43:10

标签: sql database sql-update informix

在网址http://sqlfiddle.com/#!2/f6cc7/3中,它具有以下架构:

CREATE TABLE apsent
    (`day_id` int, `apssent_date` date);

INSERT INTO apsent
    (`day_id`, `apssent_date`)
VALUES
    (1, '2013-09-26'),
    (2, '2013-09-27')
;

我想知道如何将其apssent_date更新为15天的日期子结构?我正在使用Informix DB。

4 个答案:

答案 0 :(得分:2)

USE DATE_SUB()功能,如下所示:

UPDATE `apsent` SET apssent_date = DATE_SUB(apssent_date, INTERVAL 15 DAY)

工作小提琴:http://sqlfiddle.com/#!2/2cc465/1

答案 1 :(得分:2)

在Informix中它是

UPDATE apsent SET apssent_date = apssent_date -interval(15) day to day

在Mysql中它是

UPDATE apsent SET apssent_date = DATE_SUB(apssent_date,INTERVAL 15 DAY);

答案 2 :(得分:2)

这是我在Informix上的测试,用dbaccess运行语句。

Obs.Informix不支持问题中使用的插入语法。

$ DBDATE=y4md- dbaccess -e -a mydb x.sql

Database selected.
CREATE temp TABLE apsent
    (day_id int, apssent_date date);
Temporary table created.

INSERT INTO apsent (day_id, apssent_date) VALUES (1, '2013-09-26');
1 row(s) inserted.

INSERT INTO apsent (day_id, apssent_date) VALUES (2, '2013-09-27');
1 row(s) inserted.

INSERT INTO apsent (day_id, apssent_date) VALUES (2, '2013-01-01');
1 row(s) inserted.


select * , apssent_date - 15 units day from apsent ;

     day_id apssent_date (expression)
          1 2013-09-26   2013-09-11
          2 2013-09-27   2013-09-12
          2 2013-01-01   2012-12-17
3 row(s) retrieved.


update apsent set apssent_date = apssent_date - 15 units day ;
3 row(s) updated.


select * from apsent ;

     day_id apssent_date
          1 2013-09-11
          2 2013-09-12
          2 2012-12-17

3 row(s) retrieved.
Database closed.

答案 3 :(得分:1)

在Informix中:

更新不满意    SET apssent_date = apssent_date - 15