팁
[SQL] 데이터베이스
망고고래
2025. 2. 6. 17:35
1. 정렬 - 숫자
order by에서 asc를 사용하면 10, 11, 12가 2보다 먼저 나온다.
해결: CAST
-- 예시: nameColumn의 값이 '문자열 + - + 숫자'로 구성된 상황
CAST(SUBSTRING_INDEX(nameColumn, '-', -1) AS UNSIGNED)
-- nameColumn의 값이 '문자열 + 숫자'로 구성된 경우에도 대응
CAST(REGEXP_SUBSTR(nameColumn, '[0-9]+$') AS UNSIGNED)
2. 웹페이지에서 datetime에 9시간씩 더해져서 나옴
function formatDateTime(dateString) {
if (!dateString) return '';
const date = new Date(dateString);
if (isNaN(date.getTime())) return dateString; // 유효하지 않은 날짜인 경우 원본 반환
return date.toLocaleString('ko-KR', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
});
}
toLocaleString()에 한국을 넣어 사용하면 9시간씩 더해져서 나온다.
UTC 시간을 그대로 사용하도록 하면 된다.
function formatDateTime(dateString) {
if (!dateString) return '';
const date = new Date(dateString);
if (isNaN(date.getTime())) return dateString; // 유효하지 않은 날짜인 경우 원본 반환
// UTC 시간을 그대로 사용하여 포맷팅
return date.getUTCFullYear() + '-' +
String(date.getUTCMonth() + 1).padStart(2, '0') + '-' +
String(date.getUTCDate()).padStart(2, '0') + ' ' +
String(date.getUTCHours()).padStart(2, '0') + ':' +
String(date.getUTCMinutes()).padStart(2, '0') + ':' +
String(date.getUTCSeconds()).padStart(2, '0');
}