我正在使用PostgreSQL 9.3
我有一个名为约会日期在表约会有错误的日期,如21117-03-04
我希望更新列中的所有行有一个默认的日期,例如,如果该列上的值是任何错误的日期,则为1900-01-01
。我还没有尝试过任何解决方案。请帮忙。如果错误日期更新PSQL列与默认日期
0
A
回答
0
您可以使用以下步骤
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `MAKE_ACCURATE_DATE`()
BEGIN
DECLARE VAR_ID varchar(100);
DECLARE VAR_DATE DATE;
DECLARE VAR_FINISHED INT(11) DEFAULT 0;
DECLARE DATABASE_CURSOR CURSOR FOR
SELECT DATE(DATE_COLUMN) DATE_COLUMN,ID
FROM YOUR_TABLE_NAME;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET VAR_FINISHED = 1;
OPEN DATABASE_CURSOR;
GET_NEXTRECORD: LOOP
FETCH DATABASE_CURSOR INTO VAR_DATE,VAR_ID;
IF VAR_FINISHED = 1 THEN
LEAVE GET_NEXTRECORD;
END IF;
IF VAR_DATE =NULL THEN
UPDATE YOUR_TABLE_NAME SET DATE_COLUMN='1900-01-01' WHERE ID=VAR_ID;
END IF;
END LOOP GET_NEXTRECORD;
CLOSE DATABASE_CURSOR;
END$$
DELIMITER ;
OR Postgres的
CREATE OR REPLACE FUNCTION IS_VALID_DATE(S VARCHAR) RETURNS BOOLEAN AS $$
BEGIN
PERFORM S::DATE;
RETURN TRUE;
EXCEPTION WHEN OTHERS THEN
RETURN FALSE;
END;
$$ LANGUAGE PLPGSQL;
,并在如下上述功能的变化。
CREATE OR REPLACE FUNCTION MAKE_ACCURATE_DATE()
RETURNS void AS
$BODY$
DECLARE
RECORD RECORD;
COUNT INT;
BEGIN
COUNT=0;
FOR RECORD IN SELECT * FROM cpad.dtl_patientappointment;
LOOP
IF(!IS_VALID_DATE(RECORD.appointmentdate)) THEN
UPDATE cpad.dtl_patientappointment SET appointmentdate='1900-01-01' WHERE patientappointmentid=RECORD.patientappointmentid;
END IF;
END LOOP;
END;
$BODY$
LANGUAGE plpgsql;
并执行此行
SELECT MAKE_ACCURATE_DATE();
它将由一个并获取从表中的你的记录作为 DATE(DATE_COLUMN)
是存在的,它会返回NULL如果日期申请条件之后不proper.So将用特定的ID
更新该记录。
希望这会有所帮助。
+0
我的表看起来像这样'SELECT patientappointmentid,interactionid,appointmentdate,appointmentreasonid, appointmentcomment, created,updatedated,deleteflag,userid, providerid,deletereason FROM cpad.dtl_patientappointment;'请更新光标 –
+0
我在postgres中出错 –
相关问题
- 1. 日期选择器与默认日期
- 2. 默认日期
- 3. 默认日期
- 4. 更改calenderextender默认日期
- 5. 如果日期与现有日期不重叠,则将日期范围更新到日期列中
- 6. WP7默认日期
- 7. 如何控制UltraWebGrid控件中日期列的默认日期?
- 8. Javascript新日期()返回错误日期
- 9. 错误日期设置为新日期()
- 10. 错误的日期插入日期列
- 11. 引导日期选择器日期范围和默认日期
- 12. 如果到达日期更长,则更新出发日期
- 13. 如果与日期
- 14. 更新日期,如果如果匹配
- 15. 错误的日期()结果
- 16. Cakephp 3.2更改默认日期格式
- 17. 更改默认的日期上的Python
- 18. MySQL更改默认会话日期
- 19. 更新行如果日期更近
- 20. jquery datepicker的默认日期
- 21. Matplotlib默认日期格式?
- 22. jQuery-UI datepicker默认日期
- 23. 默认日期值休眠
- 24. Activeadmin设置默认日期
- 25. mysql中的默认日期
- 26. Datepicker bootstrap默认日期
- 27. 覆盖默认日期
- 28. JSP日期默认值
- 29. JQuery Datepicker - 无默认日期
- 30. SSRS日期参数默认
相关的解决方案:http://stackoverflow.com/questions/25374707/check-whether-string-is-a-date-postgresql –