ステートメント: 20-12-2016
と31-12-2016
の間の乗り換えは1日遅れています。このためにSQLクエリを書くにはどうしたらいいですか?SQLは2つの値の間のすべての日付に1日追加します
私は現在持っている:
UPDATE Rides
SET (SELECT * FROM Rides WHERE Date BETWEEN '20-12-2016' AND '31-12-2016') = [SOMETHING]
ステートメント: 20-12-2016
と31-12-2016
の間の乗り換えは1日遅れています。このためにSQLクエリを書くにはどうしたらいいですか?SQLは2つの値の間のすべての日付に1日追加します
私は現在持っている:
UPDATE Rides
SET (SELECT * FROM Rides WHERE Date BETWEEN '20-12-2016' AND '31-12-2016') = [SOMETHING]
これは、Oracleで動作します。それは予約済みで名前フィールド/列に悪い習慣があるため
UPDATE rides
SET date_field = date_field + 1
WHERE date_field BETWEEN '2016-12-20' AND '2016-12-31';
私はdate_field
として更新するためのフィールドを参照してください。キーワード。
あなたはOracle
のために使用することができます以下
Update Rides
Set Date = Date + 1
Where Date Between '2016-12-20' And '2016-12-31'
使用しているどのようなDBMS
そのトリックはしましたか?ありがとう:) –
日付の値には文字列リテラルを使用しないでください。 Oracleは暗黙的に 'NLS_DATE_FORMAT'をフォーマット・マスクとして' TO_DATE() 'を呼び出します。これが一致しない場合、問合せは失敗します。さらに悪いことに、 'NLS_DATE_FORMAT'はセッションパラメータですので、どのユーザもセッションのために変更することができ、クエリのテキストを変更することなくそのユーザのために中断することができます(他のユーザのために働くことができます) 。 – MT0
? (SQL Server?MySQL?Oracle?その他) – Siyual
mysqlの場合は、日付が間違っていて動作しません。 "date math"は、 'yyyy-mm-dd'でフォーマットされた日付でのみ動作します。クエリに値を代入することはできません。クエリからのみ値を抽出します。 –
oracleを使用しています。申し訳ありませんが、 –