programing

Oracle: 타임스탬프에 분을 추가하는 방법

mytipbox 2023. 2. 27. 23:23
반응형

Oracle: 타임스탬프에 분을 추가하는 방법

Oracle 날짜 열의 값에 30분을 추가해야 합니다.이 작업은 SELECT 스테이트먼트에서 수행합니다.

to_char(date_and_time + (.000694 * 31)

대부분의 경우 잘 작동합니다.하지만 시간이 AM/PM 경계에 있을 때는 그렇지 않다.예를 들어 30분 추가 등12:30[which is PM]이 반환됩니다.1:00AM입니다.제가 예상하는 답은13:00올바른 방법은 무엇입니까?

날짜에 일 수를 추가할 수 있을 뿐만 아니라 현재 날짜라고 가정할 때 간격 데이터 유형을 사용할 수 있습니다.Oracle 9i조금 더 쉽게 읽을 수 있을 것 같은데

SQL> ed
Wrote file afiedt.buf
SELECT sysdate, sysdate + interval '30' minute FROM dual
SQL> /

SYSDATE              SYSDATE+INTERVAL'30'
-------------------- --------------------
02-NOV-2008 16:21:40 02-NOV-2008 16:51:40

다른 답변들은 기본적으로 모두 맞지만 아무도 당신의 질문에 직접 답하지 않은 것 같습니다.

이 예의 "DATE_and_time"이 DATE 또는 TIMESTAMP 유형의 열이라고 가정하면 다음과 같이 변경할 필요가 있다고 생각합니다.

to_char(date_and_time + (.000694 * 31))

다음과 같이 입력합니다.

to_char(date_and_time + (.000694 * 31), 'DD-MON-YYYY HH24:MI')

기본 날짜 형식에서 시간에 "HH24"가 아닌 "HH" 코드를 사용하는 것 같습니다.

또한, 저는 당신의 끊임없는 용어가 혼란스럽고 부정확하다고 생각합니다.1분의 값(.000694)을 계산하여 추가할 분수를 곱한 것입니다(예에서는 31, 텍스트에서는 30이라고 했지만).

또한 하루로 시작하여 코드 내에서 원하는 단위로 나눕니다.이 경우 (1/48)은 30분입니다.또, 알기 쉽게 분할하는 경우는, ((1/24) * (1/2) 라고 입력합니다.

이렇게 하면 반올림 오류(여기서는 무의미해야 하는 부동 소수점 고유 오류 제외)를 피할 수 있고 적어도 나에게는 더 명확합니다.

UPDATE "TABLE" 
SET DATE_FIELD = CURRENT_TIMESTAMP + interval '48' minute 
WHERE (...)

어디에interval의 하나입니다.

  • 연도
  • 요일
  • 시간
  • 극히 작은
  • 둘째

http://www.orafaq.com/faq/how_does_one_add_a_day_hour_minute_second_to_a_date_value 에서

SYSDATE 의사 열은 현재 시스템 날짜와 시간을 표시합니다.SYSDATE에 1을 추가하면 날짜가 하루 앞당겨집니다.분수를 사용하여 날짜에 시간, 분 또는 초 추가

SQL> select sysdate, sysdate+1/24, sysdate +1/1440, sysdate + 1/86400 from dual;

SYSDATE              SYSDATE+1/24         SYSDATE+1/1440       SYSDATE+1/86400
-------------------- -------------------- -------------------- --------------------
03-Jul-2002 08:32:12 03-Jul-2002 09:32:12 03-Jul-2002 08:33:12 03-Jul-2002 08:32:13

저는 VIP를 사용하는 것이 좋습니다.interval문자 그대로입니다.왜냐하면interval '30' minute또는interval '5' second그럼 훨씬 읽기 쉬울 거야30 / (24 * 60)또는5 / (24 * 60 * 69)

예.

  • some_date + interval '2' hour
  • some_date + interval '30' minute
  • some_date + interval '5' second
  • some_date + interval '2' day

여러 단위를 하나의 식에 결합할 수도 있습니다.

  • some_date + interval '2 3:06' day to minute

날짜 값에 2일 3시간 6분 추가

위의 SQL은 표준 SQL이며 다른 여러 DBMS에서도 작동합니다.

상세한 것에 대하여는, 메뉴얼을 참조해 주세요.https://docs.oracle.com/database/121/SQLRF/sql_elements003.htm#SQLRF00221

필드의 데이터 유형이 날짜 또는 타임스탬프인 경우 올바른 일수(또는 사용자의 경우 올바른 하루의 일부)를 추가하면 Oracle은 항상 올바른 결과를 제공해야 합니다.따라서 30분 이내에 값을 범핑하려는 경우 다음을 사용해야 합니다.

select field + 0.5/24 from table;

당신이 제공한 정보로 미루어 볼 때, 이것이 당신이 시도했던 것이라고 믿고 있으며, 저는 그것이 효과가 있다고 확신합니다.

이거 안 쓰면 안 돼요?

SELECT date_and_time + INTERVAL '20:00' MINUTE TO SECOND FROM dual;

저는 이 도메인을 처음입니다.

그렇게 쉽게

시스템 날짜에 10분을 추가했고 항상 사용자 지정 기능이 아닌 DB 서버 기능을 사용합니다.

select to_char(sysdate + NUMTODSINTERVAL(10,'MINUTE'),'DD/MM/YYYY HH24:MI:SS') from dual;

Oracle은 시작 시간이 PM임을 이해하고 최종 출력에 HH24 형식 마스크를 지정해야 합니다.

SELECT to_char((to_date('12:40 PM', 'HH:MI AM') + (1/24/60) * 30), 'HH24:MI') as time
  FROM dual

TIME
---------
13:10

★★★★★'AM'HH:입니다.MI AM/PM の mi mi mi mi mi 。, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 맞다.'PM'

Oracle에는 이를 위한 새로운 기능이 내장되어 있습니다.

select systimestamp START_TIME, systimestamp + NUMTODSINTERVAL(30, 'minute') end_time from dual

HH24를 원하는 이유는 다음과 같습니다.to_char의 MI 형식.

Oracle에서 날짜를 편집하려면

  select to_char(<columnName> + 5 / 24 + 30 / (24 * 60),
           'DD/MM/RRRR hh:mi AM') AS <logicalName> from <tableName>
SELECT to_char(sysdate + (1/24/60) * 30, 'dd/mm/yy HH24:MI am') from dual;

다양한 날짜 형식으로 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/257324/oracle-how-to-add-minutes-to-a-timestamp

반응형