블로그는 나의 힘!
[ Programing ]/Database2025. 8. 13. 11:19

C++ 환경에서 MySQL ODBC 8.0 (64bit) 설치 시 나타난 이슈 정리.


- ODBC 드라이버는 내부적으로 문자열 escape 처리, charset 인코딩, prepared query 등을 수행.
  MySQL 서버 측에서 경고 또는 정보 메시지를 반환하면 암묵적인 결과 집합이 생김.
  닫지 않으면 커서가 남아 트랜잭션에서 충돌

- 문자열 처리에 문제가 있음. 
  단일 쿼리 처리는 이슈 없으나 복수의 쿼리는 이슈. ( INSERT ...; INSERT ...; )

해결1- 단일을 반복으로 실행.
해결2- 복수 쿼리에 트랜잭션으로 묶음을 삭제. (단, 오류시 전체 롤백이 안되는 이슈 있음)
해결3- 다른 버전 설치. 8.0 고유 문제.


 

Posted by Mister_Q
[ Programing ]/Lua Scirpt2025. 7. 7. 17:10

g_CurrentTime = os.time()

local TIME_MIN = 60
local TIME_HOUR = TIME_MIN * 60
local TIME_DAY = TIME_HOUR * 24
local TIME_WEEK = TIME_DAY * 7

--!< 시간 확인
function GetTargetDay(tmTime, standHour, standMinute)
      return os.date("%Y%m%d", tmTime - (standHour * TIME_HOUR) - (standMinute * TIME_MIN))
end

--!< 경과 일
function BetweenDay(baseTime, targetTime)
      local outputDay = math.floor((targetTime - baseTime) / TIME_DAY)
      return outputDay
end

--!< 날짜 변환 (yyyymmdd)
function ConvertTime(targetDate)
      local targetValue = targetDate

      local targetYear = math.floor(targetValue / (100 * 100))

      targetValue = math.floor(targetValue % (100 * 100))
      local targetMonth = math.floor(targetValue / 100)
      targetValue = math.floor(targetValue % 100)
      local targetDay = targetValue

      local targetTime = os.time{
            year = targetYear,
            month = targetMonth,
            day = targetDay,
            hour = 0,
            min = 0,
            sec = 0,
      }

      return tonumber(targetTime)
end

--!< 매주 초기화 시간 계산 -다음 종료 시간
function GetNextWeekTime(nTargetDay)
      local targetTime = ConvertTime(nTargetDay)     --!< YYYYMMDD -> time (EX : 20250626 -> 1750863600)
      local currentWeek = tonumber(os.date("%w", targetTime))       --!< 0:일, ~ 6:토
      local everyWeek = 2       --!< 매주 초기화 대상 요일
      local MaxWeek = 6 + 1

      --!< 다음 초기화 날짜 계산
      local addDay = 0
      if (currentWeek > everyWeek) then       --!< 현재가 요일보다 초과 시
            addDay = MaxWeek - currentWeek + everyWeek
      elseif (currentWeek < everyWeek) then       --!< 현재가 요일보다 미만 시
            addDay = everyWeek - currentWeek
      else
            addDay = MaxWeek       --!< 동일하면 일주일 가산 +7
      end

     return targetTime + (addDay * TIME_DAY)
end


--!< Main ...
--!< YYYYMMDD (EX : 20250626)

local strTargetDay = GetTargetDay(g_CurrTime, 6, 0)
local nTargetDay = tonumber(strTargetDay)

--!< 매주 초기화 시간 계산
local nextTime = GetNextTime(nTargetDay)
local nextDate = tonumber(os.date("%Y%m%d", nextTime))

--!< 경과 일일 계산 (현재일 - 시작일)
local nStartTime = ConvertTime(20250530)
local nPassDay = BetweenDay(nStartTime, ConvertTime(nTargetDay))



 

'[ Programing ] > Lua Scirpt' 카테고리의 다른 글

[Lua] os date / os time  (0) 2025.06.26
[Lua] 문자 합치기.  (0) 2024.07.10
[LUA] Bit Flag  (0) 2023.05.02
[Lua] Bit Flag  (0) 2023.02.28
[Lua] os Time  (0) 2023.02.28
Posted by Mister_Q
[ Programing ]/Lua Scirpt2025. 6. 26. 23:08

-- os Time
local targetTime = {
     year = 2025,
     month = 6,
     day = 26,
     hour = 23,
     min = 15,
     sec = 07 } 

local timestamp = os.time(targetTime)
print("TimeStamp: ", timestamp)      -- 1750947307

local value1 = os.date("%c", current_timestamp)     -- 지역별 날짜 및 시간 표현   - Thu Jun 26 23:15:07 2025
local value2 = os.date("%Y", current_timestamp)     -- 4자리 연도   - 2020
local value3 = os.date("%m", current_timestamp)     -- 2자리 월 (01~12)   - 06
local value4 = os.date("%d", current_timestamp)     -- 월중 일 (01~31)   - 26
local value5 = os.date("%H", current_timestamp)     -- 24시간 형식 시간 (00~23)   - 23
local value6 = os.date("%M", current_timestamp)     -- 2자리 분 (00~59)   - 15
local value7 = os.date("%S", current_timestamp)     -- 2자리 초 (00~59)   - 7
local value8 = os.date("%w", current_timestamp)     -- 요일 (일=0, 월=1, ~ 토=6)   - 4(목)
local value9 = os.date("%j", current_timestamp)     -- 연중 일 (001~366)   - 177
local value10 = os.date("%p", current_timestamp)     -- 현재 로케일에 따른 오전/오후 (AM/PM)   - PM
local value11 = os.date("%Z", current_timestamp)     -- 시간대 이름, 약어   - KST (시스템 설정 따라 다름)
local value12 =  os.date("%Y%m%d%H%M%S", current_timestamp)      -- YYYYmmddHHMMSS   - 20250626231507



-- os Date
local dateInfo = os.date("*t", timestamp)


local value20 = dateInfo.year     -- 연도   - 2025

local value21 = dateInfo.month     -- 월 (1~12)   - 6
local value22 = dateInfo.day     -- 일 (1~31)   - 26
local value23 = dateInfo.hour     -- 시 (0~23)   - 23
local value24 = dateInfo.min     -- 분 (0-59)   - 15
local value25 = dateInfo.sec     -- 초 (0-59)   - 7
local value26 = dateInfo.wday     -- 요일 (일=1, 월=2, ~토=7)   - 5(목)   ※ 참고: os.date("%w") → 일=0, 월=1, ~토=6
local value27 = dateInfo.yday     -- 연중 일 (1월 1일부터 일수, 1 ~ 366)
local value28 = dateInfo.isdst     -- 일광 절약 시간 적용 여부 (true, false).   해당 시간 일광 절약 시간 true, 아니면 false



-- Other os Time
-- 초과하는 값을 넣어도 Lua가 자동으로 다음 달로 넘어가게 계산해 적용
-- 현재 시간을 기준으로 10일 후 (6월 27일 + 10일 = 7월 7일)
local targetTime = os.time{
     year = 2025, 
     month = 6,
     day = 27 + 10,      -- 37일이 됩니다.
     hour = 0,
     min = 0,
     sec = 0, }
-- 계산된 targetTime을 사람이 읽을 수 있는 형태로 변환

local formattedDate = os.date("%Y%m%d%H%M%S", targetTime)
print("계산된 날짜:", formattedDate)     -- 계산된 날짜: 2025년 07월 07일 00시 00분 00초






'[ Programing ] > Lua Scirpt' 카테고리의 다른 글

[Lua] 시간 체크 함수 정리.  (1) 2025.07.07
[Lua] 문자 합치기.  (0) 2024.07.10
[LUA] Bit Flag  (0) 2023.05.02
[Lua] Bit Flag  (0) 2023.02.28
[Lua] os Time  (0) 2023.02.28
Posted by Mister_Q