0

MySQLにSQLクエリがあります:

SELECT
   distinct 
   us.user_id as user_id, 
   us.ab_id,
   users.name,
   users.role,
   users.is_admin,
   DATE_FORMAT('2013-11-05T10:06:21+04:00', '%Y-%m') as month_m
FROM attach_offices as us
LEFT JOIN users ON users.id = user_id
WHERE us.`ab_id` = 999999999 and
 DATE_FORMAT('2013-11-05T10:06:21+04:00', '%Y-%m') between DATE_FORMAT(dt_begin, '%Y-%m') and DATE_FORMAT(`dt_end`, '%Y-%m')

それを Oracle 11g に変換するにはどうすればよいですか? 私はこのようなものを書きます:

SELECT 
     distinct 
   attach_offices.user_id as user_id, 
   attach_offices.ab_id,
   users.name,
   users.role,
   users.is_admin,
   to_date('2013-11-05T10:06:21+04:00', 'YYYY-MM') as month_m       
FROM attach_offices 
LEFT JOIN users ON users.id = user_id
WHERE attach_offices.ab_id = 999999999 and
 to_date('2013-11-05T10:06:21+04:00', 'YYYY-MM') between to_date(to_char(dt_begin, 'YYYY-MM'), 'YYYY-MM') and to_date(to_char(dt_end, 'YYYY-MM'), 'YYYY-MM')

しかし、うまくいきません。日付の問題、使用する2013-11-05T10:06:21+04:00と機能しませんが、使用2013-11すると機能します

4

2 に答える 2

1

TO_DATEフォーマットで与えられたものに変換するSTRINGので、指定しDATEています。
DATE_FORMATただし、指定どおりに DATE をフォーマットします。

したがって、次の オプションがあり
ます。 3. 特別に細工された 1 つの再フォーマットを別の. 最初に2で説明されているように日付に変換してから、必要な形式で1​​で説明されているように文字列に変換し直します。 4. もう 1 つのケース - 出力形式を変更する場合は、ALTER SESSION 変数 NLS_DATE_FORMAT が必要です。DATESTRINGTO_CHAR(DATE, '<format>')
STRINGDATETO_DATE(string,'<format that describes string>')
STRINGSTRING

于 2013-11-05T06:59:33.370 に答える
-1

私はこのようなことをしていますが、DRYではなく、コードの匂いがするようです:

SELECT 
   distinct 
   attach_offices.user_id as user_id, 
   attach_offices.ab_id,
   users.name,
   users.role,
   users.is_admin,
   to_date(to_char(to_date('2013-11-05T10:06:21+04:00', 'YYYY-MM-DD"T"HH24:MI:SS"+04:00"'), 'YYYY-MM'),'YYYY-MM') as month_m         
FROM attach_offices 
LEFT JOIN users ON users.id = user_id
WHERE attach_offices.ab_id = 999999999 and
to_date(to_char(to_date('2013-11-05T10:06:21+04:00', 'YYYY-MM-DD"T"HH24:MI:SS"+04:00"'), 'YYYY-MM'),'YYYY-MM') between to_date(to_char(dt_begin, 'YYYY-MM'), 'YYYY-MM') and to_date(to_char(dt_end, 'YYYY-MM'), 'YYYY-MM')
于 2013-11-05T07:07:39.707 に答える