私は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();
を実行
日が条件を適用した後proper.Soでない場合には1で表1から、あなたのレコードをフェッチし、DATE(DATE_COLUMN)
がある として、それはnullを返しますそのレコードを特定のID
で更新します。
これが役に立ちます。
+0
私の表は、この 'SELECT patientappointmentid、interactionid、appointmentdate、appointmentreasonid、 appointmentcommentのように見え、providerid、deletereason FROM cpad.dtl_patientappointment;カーソルを更新してください –
+0
がpostgresでエラーになっています –
関連する問題
- 1. 日付が有効な場合、JQueryの日付ピッカーを更新する
- 2. 私はミリ秒単位で次の日付を持っている場合は、日付が誤っ
- 3. アクセス更新クエリ:ID一致、日付は2列の日付間
- 4. ブートストラップ日付ピッカーのデフォルトの日付
- 5. 更新最終更新日付列
- 6. SQLデータベースの日付の列を更新
- 7. ブートストラップ日付ピッカーの日付範囲とデフォルトの日付
- 8. ExtJSの解析日付が誤っ
- 9. 列の日付の日付がユーザーによって決められた2つの日付の間にある場合、行を新しいシートにコピー
- 10. 更新日付ピッカー
- 11. 日付列が日付データ型の場合は、特定の日付のテーブルからレコードをフェッチするクエリ
- 12. Python:日付がNATの場合の日付の違い
- 13. 日付と月の値が00の場合、Drupalの日付モジュール
- 14. 更新日時フィールドの日付部分
- 15. WP7デフォルトの日付
- 16. Informix 7.3 - 挿入/更新時に現在の日付としてデフォルトの日付列データ型を宣言する
- 17. 更新日時私はデータベースに日付を更新したい
- 18. セル更新の日付スタンプ
- 19. 日付が既存のものと重複しない場合、日付の範囲を日付の列に更新します。
- 20. 別のテーブルのMAX日付から日付フィールドを更新
- 21. 今日の日付で現在の列を更新する
- 22. 日付が文字列の場合に日付表を照会する方法
- 23. CalenderView日付のlistView日付を更新する方法
- 24. 現在の日付が特定の日付と同じ場合にフィールドを自動更新する方法
- 25. 更新日の列と書式の日付が同じパターン
- 26. Pythonで日付を更新
- 27. jqgrid 2つの日付を持つ日付列の日付ソート
- 28. ソートフォーマットされた日付列が日付
- 29. 日付とJavaScriptの新しい日付
- 30. C#の日付==特定の日付の合計列行
関連ソリューション:http://stackoverflow.com/questions/25374707/check-whether-string-is-a-date-postgresql –