programing

간격을 분으로 변환

firstcheck 2023. 6. 22. 23:50
반응형

간격을 분으로 변환

두 개의 간격이 있다고 가정합니다.

INTERVAL '0 00:30:00' DAY TO SECOND
INTERVAL '0 04:00:00' DAY TO SECOND

각 간격마다 분을 얻는 가장 우아한 방법은 무엇입니까? 30그리고.240따라서.

네, 할 수 있다는 것을 압니다EXTRACT(HOUR FROM interval) * 60 + EXTRACT(MINUTE FROM interval)하지만 이건 끔찍해 보여요

더 좋은 해결책은 없습니까?

당신이 보기에 끔찍해 보이는 것은, 제가 보기에 완벽하게 받아들일 수 있는 것처럼 보입니다.INTERVAL에 대해 수행할 수 있는 산술의 설명서를 보면 다음과 같습니다.

http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/sql_elements001.htm#sthref175

그러면 당신은 그것들을 숫자로 곱할 수 있다는 것을 알 수 있습니다.그래서 여러분이 여러분의 간격을 24와 60으로 곱하면, 여러분은 일의 수를 추출함으로써 분의 수를 얻을 수 있습니다.좀 더 콤팩트하지만, 당신이 보기에 더 우아한지는 의문입니다.

SQL> create table t (my_interval interval day to second)
  2  /

Table created.

SQL> insert into t
  2  select numtodsinterval(30,'minute') from dual union all
  3  select numtodsinterval(4,'hour') from dual
  4  /

2 rows created.

SQL> select my_interval
  2       , 60 * extract(hour from my_interval)
  3         + extract(minute from my_interval) minutes_terrible_way
  4       , extract(day from 24*60*my_interval) minutes_other_way
  5    from t
  6  /

MY_INTERVAL                    MINUTES_TERRIBLE_WAY MINUTES_OTHER_WAY
------------------------------ -------------------- -----------------
+00 00:30:00.000000                              30                30
+00 04:00:00.000000                             240               240

2 rows selected.

안부 전해요,

(extract(day from my_interval) * 24 * 60 + extract(hour from my_interval)) * 60 + extract(minute from my_interval) my_way

며칠을 잊지 마세요.

위의 롭의 예를 다시 사용하면,

select (sysdate-(sysdate-to_dsinterval(my_interval)))*24*60 from t;

언급URL : https://stackoverflow.com/questions/5063214/convert-interval-to-minutes

반응형