MariaDB 이달의 첫째 날 찾기 및 UTC로 변환
MariaDB를 사용하고 있으며 기록은 모두 UTC에 저장되어 있지만 현지 시간대를 기준으로 지난 12개월 이내의 기록을 찾을 수 있기를 원합니다.
제가 취한 조치는 다음과 같습니다.
SELECT
CURRENT_TIMESTAMP() AS Current_Date_And_Time_In_UTC,
CONVERT_TZ(CURRENT_TIMESTAMP(),'UTC','Pacific/Auckland') AS Current_Date_And_Time_In_Auckland,
DATE(CONVERT_TZ(CURRENT_TIMESTAMP(),'UTC','Pacific/Auckland')) AS Date_In_Auckland,
LAST_DAY(DATE(CONVERT_TZ(CURRENT_TIMESTAMP(),'UTC','Pacific/Auckland')) - INTERVAL 1 MONTH) AS Last_Day_Previous_Month_In_Auckland,
LAST_DAY(DATE(CONVERT_TZ(CURRENT_TIMESTAMP(),'UTC','Pacific/Auckland')) - INTERVAL 1 MONTH) + INTERVAL 1 DAY AS First_Day_Current_Month_In_Auckland,
TIMESTAMP(LAST_DAY(DATE(CONVERT_TZ(CURRENT_TIMESTAMP(),'UTC','Pacific/Auckland')) - INTERVAL 1 MONTH) + INTERVAL 1 DAY, MAKETIME(0,0,0)) AS First_Day_At_Midnight_Current_Month_In_Auckland,
CONVERT_TZ(TIMESTAMP(LAST_DAY(DATE(CONVERT_TZ(CURRENT_TIMESTAMP(),'UTC','Pacific/Auckland')) - INTERVAL 1 MONTH) + INTERVAL 1 DAY, MAKETIME(0,0,0)), 'Pacific/Auckland','UTC') AS First_Day_At_Midnight_Current_Month_In_UTC
이를 통해 이 기능을 사용할 수 있게 되었습니다.
SELECT
CONVERT_TZ(TIMESTAMP(LAST_DAY(DATE(CONVERT_TZ(CURRENT_TIMESTAMP(),'UTC','Pacific/Auckland')) - INTERVAL 13 MONTH) + INTERVAL 1 DAY, MAKETIME(0,0,0)), 'Pacific/Auckland','UTC') AS Start_DateTime_In_UTC,
CONVERT_TZ(TIMESTAMP(LAST_DAY(DATE(CONVERT_TZ(CURRENT_TIMESTAMP(),'UTC','Pacific/Auckland')) - INTERVAL 1 MONTH) + INTERVAL 1 DAY, MAKETIME(0,0,0)), 'Pacific/Auckland','UTC') AS End_DateTime_In_UTC
같은 결과를 얻을 수 있는 더 간단한 방법이 있습니까?
의 열이 있는 경우timestamp
데이터 유형의 경우 오프셋이 전혀 필요하지 않습니다.
설명서에는 다음이 명시되어 있습니다.
열이 다음을 사용하는 경우
TIMESTAMP
데이터 유형을 선택하면 삽입된 값이 저장될 때 세션의 표준 시간대에서 UTC(조정된 범용 시간)로 변환되고 검색될 때 세션의 표준 시간대로 다시 변환됩니다.
세션의 표준 시간대가 로컬 표준 시간대로 설정되어 있다고 가정하면 지난 12개월을 기준으로 열을 필터링하는 작업은 다음과 같이 간단합니다.
where myts >= date_format(current_date, '%Y-%m-01') - interval 12 month
and myts < date_format(current_date, '%Y-%m-01')
언급URL : https://stackoverflow.com/questions/63984703/mariadb-find-the-first-day-of-the-month-and-convert-to-utc
'programing' 카테고리의 다른 글
여러 필드를 포함하는 필드 쿼리 (0) | 2023.08.30 |
---|---|
SQLAlchemy를 사용하여 MySQL에서 db를 만드는 방법은 무엇입니까? (0) | 2023.08.30 |
GET 인수가 없는 요청 문자열 (0) | 2023.08.30 |
XDomainRequest 또는 ActiveXObject('Microsoft.XMLHTTP') (0) | 2023.08.30 |
지정된 값이 처음 나타날 때까지 모든 행 선택 (0) | 2023.08.25 |