DATETIME列を持つテーブルがあります。この日時値を選択して、別の列に挿入したいと思います。
これを行いました(注: '2011-12-18 13:17:17'は、以前のSELECTがDATETIMEフィールドから与えた値です):
UPDATE products SET former_date=2011-12-18 13:17:17 WHERE id=1
そして得る
1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '13:17:17 WHERE itemid=1' at line 1
OK、引用符で囲まれていない文字列を入れるのは間違っていると理解していますが、DATETIMEはそもそも単なる文字列ですか?何をdo入れますか?私が望むのは、既存の値を新しい日時フィールドに確実に転送することです...
編集:
私が尋ねる理由は、この特別な定義であるDATETIMEがあり、何らかの理由で、日付を処理するときにセキュリティやその他の利点が得られると思ったからです。今では、いわば単に特殊なVARCHARのようです。
ご回答いただきありがとうございます、これは実際に意図された動作であるようです。
MySQLのドキュメントによると、その日付/時刻文字列を単一引用符( 'YYYY-MM-DD HH:MM:SS')で囲むだけで機能するはずです。ここを見てください: 日付と時刻のリテラル
したがって、あなたの場合、コマンドは次のようになります。
UPDATE products SET former_date='2011-12-18 13:17:17' WHERE id=1
試して
UPDATE products SET former_date=20111218131717 WHERE id=1
または、STR_TO_DATE( STR_TO_DATE(str、format) を参照)関数の使用を検討することもできます。
mYSQLの場合はこれを試してください
INSERT INTO table1(
myDatetimeField
)VALUES(STR_TO_DATE('12 -01-2014 00:00:00 '、'%m-%d-%Y%H:%i:%s ');
検証-
table1から*を選択
output- datetime = 2014-12-01 00:00:00
コードの残りの部分でDATETIME値が必要ない場合は、サブセレクトでUPDATEクエリを使用する方が効率的で、シンプルで安全です。
UPDATE products SET t=(SELECT f FROM products WHERE id=17) WHERE id=42;
または、単一のテーブルの同じ行にある場合は、
UPDATE products SET t=f WHERE id=42;