0

DATE_ADD の引数をテーブルのフィールドの値として使用することは可能ですか?

SELECT DATE_ADD(some_date, INTERVAL some_number WEEK) as new_date FROM table1

「WEEK」をテーブルの値に置き換えることは可能ですか? DAY、WEEK、MONTH などの値を持つ列があるとしましょう。

4

1 に答える 1

1

いいえ。式には動的な値のみを使用できますが、間隔のユニットキーワードには使用できません。単位キーワードはSECONDDAY_MICROSECONDなどです。
これらの単位名を連結すると文字列式になり、間隔値として評価できません。したがって、これを実現するためにプレースホルダー (準備されたステートメント) を使用することはできません。

または、プログラミング言語で部分的な文字列を連結してクエリを生成することもできます。

String part1 = "SELECT DATE_ADD(some_date, INTERVAL some_number ";  
String part2 = "WEEK"; // say as default value  

if( my_condition_1_is_satisfied ) then part2 = "DAY"
else if( my_condition_2_is_satisfied ) then part2 = "MONTH"
else ...

// then concatenate part1 and part 2
String sql = part1 + part2;
// now your query string is ready to use  

参照: DATE_ADD(日付,INTERVAL expr unit)

于 2013-09-30T10:01:16.980 に答える