반응형
MariaDB에 sprintf('%+03d:00', $my_number)에 해당하는 것이 있습니까?
SQL(MySQL 또는 MariaDB)에서 TimeZone을 숫자 형식에서 문자열(예: -10에서 "-10:00")로 변환하는 것이 목표입니다.
사실 저는 (PHP에서)와 동일한 것을 원합니다.
echo sprintf('%+03d:00', $timezone);
| In | Out |
|-----|----------|
| -10 | "-10:00" |
| -2 | "-02:00" |
| 2 | "+02:00" |
| 10 | "+10:00" |
SQL 구문으로 할 수 있는 방법이 있습니까?
저는 다음과 같은 글을 쓰기 시작했습니다.
SELECT CONCAT(CONVERT(timezone), CHAR), ":00");
그러나 출력은 예상과 다릅니다.
| In | Out |
|-----|----------|
| -10 | "-10:00" |
| -2 | "-2:00" |
| 2 | "2:00" |
| 10 | "10:00" |
잘 부탁드립니다.
다음을 사용하여 MySQL/MariaDB 변환을 수행할 수 있습니다.
(
CONCAT(
CASE
# sign condition check
WHEN (ABS(timezone) = timezone) = 0
THEN "-"
ELSE "+"
END
, LPAD(ABS(timezone), 2, '0')
, ":00"
)
) AS alias
테스트 데이터를 사용한 쿼리
SELECT
timezone AS 'In'
, (
CONCAT(
CASE
# sign condition check
WHEN (ABS(timezone) = timezone) = 0
THEN "-"
ELSE "+"
END
, LPAD(ABS(timezone), 2, '0')
, ":00"
)
) AS 'Out'
FROM (
SELECT -10 as timezone
UNION ALL
SELECT -2 AS timezone
UNION ALL
SELECT 2 AS timezone
UNION ALL
SELECT 10 AS timezone
) AS test_data;
결과.
| In | Out |
| --- | ------ |
| -10 | -10:00 |
| -2 | -02:00 |
| 2 | +02:00 |
| 10 | +10:00 |
데모 보기
SELECT dt + INTERVAL timezone HOUR;
추가할 예정timezone
몇 시간 전에DATETIME dt
아마timezone
부호 있는 정수입니다.
언급URL : https://stackoverflow.com/questions/55001158/is-there-equivalent-to-sprintf03d00-my-number-in-mariadb
반응형
'programing' 카테고리의 다른 글
각 마지막 반복에 대한 캐치 (0) | 2023.08.17 |
---|---|
VBA 없이 Excel에서 문자열(셀) 분할(예: 배열 수식) (0) | 2023.08.17 |
'주문 기준'이 지정되지 않은 경우 쿼리가 레코드 집합에 대해 선택하는 순서는 무엇입니까? (0) | 2023.08.17 |
CSS에서 "!important"를 사용하면 어떤 의미가 있습니까? (0) | 2023.08.17 |
채팅에서 "사용자가 입력 중" 기능 (0) | 2023.08.17 |