0

テーブルAが更新されるたびにテーブルBにレコードを挿入する次のトリガーがあります。これは正常に機能しますが、 TableA_dateはUNIX時間形式であり、トリガーがテーブルBにレコードを挿入するときに変換したいと思います。

DELIMITER $$
CREATE TRIGGER MyTrigger
AFTER INSERT
ON TableA
FOR EACH ROW 
BEGIN
    INSERT INTO TableB SET 
    TableB_id = NEW.TableA_id, 
    TableB_date = FROM_UNIXTIME(NEW.TableA_date, '%d/%m/%y %r'),
    TableB_comment = NEW.TableA_comment;
END $$
DELIMITER ;

私の結果では、変換された日付として「01/01/70 03:00:05 AM」の代わりに、「5」が表示されます。selectステートメントで使用できるため、フォーマット文字列が正しいことがわかります。ご協力いただきありがとうございます

4

1 に答える 1

0

あなたは一生懸命働いています。フォーマット文字列を完全に省略してください。日付は文字列ではなく日付として保存されます。

実際、変換はまったく使用しないでください。日付列を直接割り当てるだけで、MySQLが必要な変換を行います。

timestampTableA_dateはデータ型を使用して格納され、TableB_dateはであると想定していdatetimeます。(あなたもそれが欲しいかもしれませんtimestampが。)

intやcharなどの他のデータ型を使用している場合は、修正してください。これは、データベースを構造化する正しい方法ではありません。


(正しい方法を教えるのではなく)実際の質問に答えるだけで、必要な日付形式はyyyy-mm-dd hh:mm:ssあなたが持っているものではありません。

于 2012-09-04T22:32:05.817 に答える