Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Sql 通过比较日期和当前日期来选择要更新的特定值_Sql_Date_Oracle11g - Fatal编程技术网

Sql 通过比较日期和当前日期来选择要更新的特定值

Sql 通过比较日期和当前日期来选择要更新的特定值,sql,date,oracle11g,Sql,Date,Oracle11g,我试图比较一个特定的日期(在本例中是账单日期),并将其与当前日期(SYSDATE)进行比较。计费日期超过当前日期14天的任何实体都会将其帐户状态标记为不活动。代码如下: UPDATE CUSTOMERS; SET ACCOUNT_STATUS = 'Inactive' WHERE CUST_ID IN ( SELECT CUST_ID FROM BILLING WHERE BILLING_DATE IN (SELECT TRUNC(SYSDATE) - T

我试图比较一个特定的日期(在本例中是账单日期),并将其与当前日期(SYSDATE)进行比较。计费日期超过当前日期14天的任何实体都会将其帐户状态标记为不活动。代码如下:

UPDATE CUSTOMERS;
SET ACCOUNT_STATUS = 'Inactive'
WHERE CUST_ID IN

(   SELECT CUST_ID
    FROM BILLING
    WHERE BILLING_DATE IN
         (SELECT TRUNC(SYSDATE) - TRUNC(BILLING_DATE) DAYS FROM BILLING) 
    > 14)

COMMIT;
它不会运行,我不太确定错误在哪里。我使用的是Oracle11gExpress,通过浏览器工作,而不是命令行,因此我无法确定哪一行是错误的。如果您有任何建议,我们将不胜感激,谢谢

编辑:更多信息。 客户表

CREATE TABLE    CUSTOMERS    (
CUST_ID    NUMBER(5),
FIRST_NAME    CHAR(30),
LAST_NAME    CHAR(35),
ADDRESS    CHAR(100),
POSTAL_CODE    CHAR(8),
EMAIL_ADDRESS    VARCHAR2(100),
DATE_REGISTERED    DATE,
DATE_DISCONNECTED    DATE,
REASON_DISC    VARCHAR2(250),
EMPLOYEE_ID    NUMBER(5),
SURVEY_ID    NUMBER(5),
ACCOUNT_STATUS  CHAR(20),
PRIMARY KEY (CUST_ID),
FOREIGN KEY (SURVEY_ID) REFERENCES SURVEY,
FOREIGN KEY (EMPLOYEE_ID) REFERENCES EMPLOYEES
))

样本条目

INSERT INTO CUSTOMERS VALUES (1,'Alan','Abdelkarim','4712 Victorian ',' H3W 2N1','Alan.Abdelkarim@hotmail.com',(to_date('02/01/2012','mm/dd/yyyy')),NULL,NULL,NULL,NULL,'Active');
INSERT INTO BILLING VALUES (1,4,1,(to_date('11/15/2013','mm/dd/yyyy')),'8:00',(to_date('11/28/2013','mm/dd/yyyy')));
计费表

CREATE TABLE    BILLING    (
TRANSACTION_ID    NUMBER(5),
PACKAGE_ID    NUMBER(5),
CUST_ID    NUMBER(5),
BILLING_DUE    DATE,
TRANS_TIME    CHAR(5),
TRANS_DATE  Date,
PRIMARY KEY (TRANSACTION_ID),
FOREIGN KEY (PACKAGE_ID) REFERENCES PACKAGES, 
FOREIGN KEY (CUST_ID) REFERENCES CUSTOMERS
))

样本条目

INSERT INTO CUSTOMERS VALUES (1,'Alan','Abdelkarim','4712 Victorian ',' H3W 2N1','Alan.Abdelkarim@hotmail.com',(to_date('02/01/2012','mm/dd/yyyy')),NULL,NULL,NULL,NULL,'Active');
INSERT INTO BILLING VALUES (1,4,1,(to_date('11/15/2013','mm/dd/yyyy')),'8:00',(to_date('11/28/2013','mm/dd/yyyy')));
试试这个:

UPDATE CUSTOMERS
SET ACCOUNT_STATUS = 'Inactive'
WHERE CUST_ID IN
 (SELECT CUST_ID
    FROM BILLING
    WHERE (TRUNC(SYSDATE) - TRUNC(BILLING_DATE)) > 14
  )
;

COMMIT;
试试这个:

UPDATE CUSTOMERS
SET ACCOUNT_STATUS = 'Inactive'
WHERE CUST_ID IN
 (SELECT CUST_ID
    FROM BILLING
    WHERE (TRUNC(SYSDATE) - TRUNC(BILLING_DATE)) > 14
  )
;

COMMIT;
试试这个:

UPDATE CUSTOMERS
SET ACCOUNT_STATUS = 'Inactive'
WHERE CUST_ID IN
 (SELECT CUST_ID
    FROM BILLING
    WHERE (TRUNC(SYSDATE) - TRUNC(BILLING_DATE)) > 14
  )
;

COMMIT;
试试这个:

UPDATE CUSTOMERS
SET ACCOUNT_STATUS = 'Inactive'
WHERE CUST_ID IN
 (SELECT CUST_ID
    FROM BILLING
    WHERE (TRUNC(SYSDATE) - TRUNC(BILLING_DATE)) > 14
  )
;

COMMIT;


“不会跑”是什么意思?你有错误吗?如果是,错误是什么?查询是否运行但未能更新您希望它更新的某些行?它是否更新了一些您不希望它更新的行?给我们一些样本数据,告诉我们预期的结果是什么。你可能会发现AskTom网站很有用。这里有一个针对你的问题的特定链接:Sure thing@JustinCave。我添加了create表和客户和账单的示例条目。我所说的“不会运行”是指,当我尝试通过Oracle SQL命令窗口(在浏览器中,而不是命令行中)运行更新时,它无法执行任何操作,并且返回错误消息“ORA-00911-无效字符”。我只是不知道我的语法错误在哪里。你得到的错误是
客户
后面的分号造成的。分号终止语句,您不希望您的
UPDATE
语句以
UPDATE CUSTOMERS
结尾,因此您不希望在此处使用分号。@这很有帮助,尽管现在我得到的是“ORA-00923 FROM keyword is misplaced”。我试过重新安排,但没有用。从我阅读的内容来看,我的整个子查询可能只是一团混乱,我可能不得不扔掉它。编辑:Nvm,刚刚收到。谢谢你的帮助!“不会跑”是什么意思?你有错误吗?如果是,错误是什么?查询是否运行但未能更新您希望它更新的某些行?它是否更新了一些您不希望它更新的行?给我们一些样本数据,告诉我们预期的结果是什么。你可能会发现AskTom网站很有用。这里有一个针对你的问题的特定链接:Sure thing@JustinCave。我添加了create表和客户和账单的示例条目。我所说的“不会运行”是指,当我尝试通过Oracle SQL命令窗口(在浏览器中,而不是命令行中)运行更新时,它无法执行任何操作,并且返回错误消息“ORA-00911-无效字符”。我只是不知道我的语法错误在哪里。你得到的错误是
客户
后面的分号造成的。分号终止语句,您不希望您的
UPDATE
语句以
UPDATE CUSTOMERS
结尾,因此您不希望在此处使用分号。@这很有帮助,尽管现在我得到的是“ORA-00923 FROM keyword is misplaced”。我试过重新安排,但没有用。从我阅读的内容来看,我的整个子查询可能只是一团混乱,我可能不得不扔掉它。编辑:Nvm,刚刚收到。谢谢你的帮助!“不会跑”是什么意思?你有错误吗?如果是,错误是什么?查询是否运行但未能更新您希望它更新的某些行?它是否更新了一些您不希望它更新的行?给我们一些样本数据,告诉我们预期的结果是什么。你可能会发现AskTom网站很有用。这里有一个针对你的问题的特定链接:Sure thing@JustinCave。我添加了create表和客户和账单的示例条目。我所说的“不会运行”是指,当我尝试通过Oracle SQL命令窗口(在浏览器中,而不是命令行中)运行更新时,它无法执行任何操作,并且返回错误消息“ORA-00911-无效字符”。我只是不知道我的语法错误在哪里。你得到的错误是
客户
后面的分号造成的。分号终止语句,您不希望您的
UPDATE
语句以
UPDATE CUSTOMERS
结尾,因此您不希望在此处使用分号。@这很有帮助,尽管现在我得到的是“ORA-00923 FROM keyword is misplaced”。我试过重新安排,但没有用。从我阅读的内容来看,我的整个子查询可能只是一团混乱,我可能不得不扔掉它。编辑:Nvm,刚刚收到。谢谢你的帮助!“不会跑”是什么意思?你有错误吗?如果是,错误是什么?查询是否运行但未能更新您希望它更新的某些行?它是否更新了一些您不希望它更新的行?给我们一些样本数据,告诉我们预期的结果是什么。你可能会发现AskTom网站很有用。这里有一个针对你的问题的特定链接:Sure thing@JustinCave。我添加了create表和客户和账单的示例条目。我所说的“不会运行”是指,当我尝试通过Oracle SQL命令窗口(在浏览器中,而不是命令行中)运行更新时,它无法执行任何操作,并且返回错误消息“ORA-00911-无效字符”。我只是不知道我的语法错误在哪里。你得到的错误是
客户
后面的分号造成的。分号终止语句,您不希望您的
UPDATE
语句以
UPDATE CUSTOMERS
结尾,因此您不希望在此处使用分号。@这很有帮助,尽管现在我得到的是“ORA-00923 FROM keyword is misplaced”。我试过重新安排,但没有用。从我阅读的内容来看,我的整个子查询可能只是一团混乱,我可能不得不扔掉它。编辑:Nvm,刚刚收到。谢谢你的帮助!是的,就是这个。非常感谢。是的,就是这个。非常感谢。是的,就是这个。非常感谢。是的,就是这个。非常感谢。