ホームページ >データベース >mysql チュートリアル >時、分、秒を変更せずに時間フィールドを MYSQL で置き換える方法
写法1:update sas_order_supply_month_pay set RECEIVE_TIME=REPLACE(RECEIVE_TIME,DATE_FORMAT(RECEIVE_TIME,'%Y-%m-%d'),(select PERIOD_END from sas_task_supply_month_pay_period where belong='1729' and CREATE_TIME like '%2017-07-12%')) where ORDER_CODE='PO201707130115';
写法2:update sas_order_supply_month_pay set RECEIVE_TIME= ADDTIME ((select PERIOD_END from sas_task_supply_month_pay_period where belong='1729' and CREATE_TIME like '%2017-07-12%')+interval 0 hour,time(RECEIVE_TIME)) where ORDER_CODE='PO201707130115';
写法3:update sas_order_supply_month_pay set RECEIVE_TIME = concat((select PERIOD_END from sas_task_supply_month_pay_period where belong='1729' and CREATE_TIME like '%2017-07-12%'),' ',DATE_FORMAT(RECEIVE_TIME,'%H:%i:%S')) where ORDER_CODE='PO201707130115';
説明: sas_order_supply_month_pay テーブルの RECEIVE_TIME フィールドの形式は「2017-06-16 12:13:16」であり、sas_task_supply_month_pay_period テーブルの PERIOD_END フィールドの形式は「 2017-07- 1 2",
実行後、RECEIVE_TIMEは"2017-07-12 12:13:16"に変更されます。
错误写法:update sas_order_supply_month_pay set RECEIVE_TIME = DATE_FORMAT(concat((select PERIOD_END from sas_task_supply_month_pay_period where belong='1729' and CREATE_TIME like '%2017-07-12%'),' ',(select DATE_FORMAT(RECEIVE_TIME,'%H:%i:%S') from sas_order_supply_month_pay where ORDER_CODE='PO201707130115')),"yyyy-MM-dd %H:%i:%S") where ORDER_CODE='PO201707130115';
エラー報告: [Err] 1093 - FROM 句で更新のターゲットテーブル「sas_order_supply_month_pay」を指定することはできません
エラー分析:
エラーステートメント: (select DATE_Fオーマット(RECEIVE_TIME,'%H:%i:%S') from sas_order_supply_month_pay where ORDER_CODE='PO201707130115')
このステートメントは実行されます単独で実行することは可能ですが、一緒に実行するとエラーが報告されます。変更されたテーブルとサブクエリを同じテーブルにすることはできません。
以上が時、分、秒を変更せずに時間フィールドを MYSQL で置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。