[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');
}