데이터베이스 서버(MSSQL, MySql, Oracle)의 현재 날짜와 시간을 가져오는 방법

프로그램을 개발할 때 현재 날짜와 시간은 무척 중요한 정보입니다.

프로그램을 개발할 때 현재 날짜와 시간은 대부분 프로그램이 실행되는 컴퓨터의 현재 날짜와 시간을 가져오는 방법으로 많이 구현하게 됩니다.

예를 들어 C#으로 현재 날짜와 시간을 가져온다고 했을 때 DateTime.Now 또는 DateTime.Today와 같이 DateTime 구조체의 Now, Today 속성 값으로 현재 날짜를 가져와서 처리하는 구문을 작성하게 됩니다.

일반적인 프로그램에서는 사용자 컴퓨터의 현재 날짜와 시간을 사용하는데 크게 문제가 발생하지 않습니다.
하지만 사용자가 임의로 조정하면 안되는 날짜와 시간을 사용자 컴퓨터의 날짜와 시간으로 가져오도록 구현 했다면 중대한 오류 또는 문제를 발생 시킬 수 있습니다.

예약 사이트를 구축한다고 했을 때 지정된 시간에 예약 신청을 Open 하는 프로세스를 구현해 놓았는데 지정된 시간을 DateTime.Now와 같은 사용자 컴퓨터의 시간으로 체크를 한다면 엄청난 문제가 발생하게 됩니다.
사용자가 자신의 컴퓨터 시간을 임의로 변경해서 실제 예약 시간이 아님에도 불구하고 예약 신청을 할 수 있는 오류가 발생할 수 있게 됩니다.

뿐만 아니라 중요하게 관리되는 작업 일시(Working Datetime) 등의 데이터를 사용자 컴퓨터의 현재 날짜와 시간으로 처리할 경우 잘못 된 데이터가 저장되어 관리될 수도 있습니다.

위와 같은 문제를 해결하기 위해서는 인터넷 타임 서버(NTP)를 활용하는 방법과 데이터베이스 서버의 현재 날짜와 시간을 가져와서 처리하는 것입니다.

인터넷 타임 서버(NTP)를 활용하는 방법은 C#에서 인터넷 타임 서버(NTP)의 현재 시간을 가져오는 로직 구현 방법(소스 설명) 글을 참고하시면 됩니다.

이번 글에서는 데이터베이스 서버(MSSQL, MySql, Oracle)의 현재 날짜와 시간을 가져오는 방법 각각에 대해 알아보겠습니다.

데이터베이스 서버(MSSQL, MySql, Oracle)의 현재 날짜와 시간을 가져오는 방법

MS SQL 서버의 현재 날짜 가져오기

▶ MS-SQL 서버의 현재 날짜와 시간을 가져오는 함수는 GETDATE() 입니다.

  • SELECT GETDATE();
  • 실행 결과 : 2024-06-11 14:38:19.837
  • SELECT YEAR(GETDATE()) AS year, MONTH(GETDATE()) AS month, DAY(GETDATE()) AS day;
  • 실행 결과 : year:2024, month:6, day:11
  • SELECT CONVERT(CHAR(19), GETDATE(), 20);
  • 실행 결과 : 2024-06-11 14:38:19

MySql 서버의 현재 날짜 가져오기

▶ MySql 또는 MariaDB 서버의 현재 날짜와 시간을 가져오는 함수는 NOW(), CURRENT_TIMESTAMP() 입니다.

  • SELECT NOW(), CURRENT_TIMESTAMP();
  • 실행 결과 : 2024-06-11 14:43:44
  • NOW(), CURRENT_TIMESTAMP() 둘 모두 현재 날짜와 시간을 반환합니다.
  • SELECT CURDATE(), CURRENT_DATE();
  • 실행 결과 : 2024-06-11
  • CURDATE(), CURRENT_DATE() 둘 모두 현재 날짜를 반환합니다.
  • SELECT CURTIME(), CURRENT_TIME();
  • 실행 결과 : 14:43:44
  • CURTIME(), CURRENT_TIME() 둘 모두 현재 시간을 반환합니다.

Oracle 서버의 현재 날짜 가져오기

▶ 오라클(Oracle) 서버의 현재 날짜와 시간을 가져오는 함수는 SYSDATE 입니다.

  • SELECT SYSDATE FROM DUAL;
  • 실행 결과 : 2024-06-11 오후 2:49:25
  • SELECT TO_CHAR(SYSTIMESTAMP, ‘YYYY-MM-DD HH24:MI:SS.FF’) AS DATETIME FROM DUAL;
  • 실행 결과 : 2024-06-11 14:49:25.287
  • 현재 날짜와 시간을 밀리세컨드까지 표현하여 반환합니다.

마무리

예전에 인터넷 예약 사이트에서 실제로 PC의 날짜를 변경해서 예약 시간이 아님에도 불구하고 예약을 진행한 경험이 있습니다.
그 사실을 해당 예약 사이트 업체에 알려주었고, 다음에 예약할 때는 오류가 해결된 것을 확인할 수 있습니다.

프로그램 개발할 현재 날짜와 시간은 정말 많이 사용하는 데이터 입니다.

현재 날짜와 시간을 사용하는 용도나 중요도에 따라 간단하게 사용자 컴퓨터의 날짜와 시간을 그대로 사용할지? 아니면 임의로 변경할 수 없는 시스템의 날짜와 시간을 사용할지? 잘 판단해서 프로그램을 구현하시기 바랍니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기