[SQL] MySQL 데이터베이스에서 통화 값을 저장하기위한 최고의 데이터 유형
SQLMySQL 데이터베이스에서 통화 값을 저장하기위한 최고의 데이터 유형
통화 가치에 가장 적합한 SQL 데이터 유형은 무엇입니까? 내가 MySQL을 사용하고 있지만, 데이터베이스 독립적 인 형태를 선호 할 것입니다.
해결법
-
==============================
1.진수 (19,4)와 같은 뭔가가 일반적으로 대부분의 경우 꽤 잘 작동합니다. 당신은 당신이 가게에 필요한 숫자의 요구에 맞게 규모와 정밀도를 조정할 수 있습니다. 심지어 SQL 서버에서, 나는 그것이 표준이 아닌 것에 따라 "돈"을 사용하지 않는 경향이있다.
진수 (19,4)와 같은 뭔가가 일반적으로 대부분의 경우 꽤 잘 작동합니다. 당신은 당신이 가게에 필요한 숫자의 요구에 맞게 규모와 정밀도를 조정할 수 있습니다. 심지어 SQL 서버에서, 나는 그것이 표준이 아닌 것에 따라 "돈"을 사용하지 않는 경향이있다.
-
==============================
2.당신이 조심해야 할 유일한 것은 당신이 하나의 데이터베이스에서 다른 데이터베이스로 마이그레이션 할 경우 그 DECIMAL (19,4) 및 DECIMAL (19,4) 평균 다른 일을 찾을 수있다
당신이 조심해야 할 유일한 것은 당신이 하나의 데이터베이스에서 다른 데이터베이스로 마이그레이션 할 경우 그 DECIMAL (19,4) 및 DECIMAL (19,4) 평균 다른 일을 찾을 수있다
( http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html )
DBASE: 10,5 (10 integer, 5 decimal) MYSQL: 15,5 (15 digits, 10 integer (15-5), 5 decimal)
-
==============================
3.어쩌면 당신의 계산에 필요한 얼마나 많은 소수점 해결하는 것도 중요합니다.
어쩌면 당신의 계산에 필요한 얼마나 많은 소수점 해결하는 것도 중요합니다.
나는 백만주의 가격의 계산을 필요로하는 주가 응용 프로그램에서 일했다. 인용 된 주가 정확도의 7 자리 숫자로 저장했다.
-
==============================
4.의 아사 프의 반응
의 아사 프의 반응
소리는 경박하지만, 실제로는 pertinant입니다.
열 중 하나는 (GrossRate) 진수 (11,4)로 설정되어, 우리의 제품 부서 그냥 몇 가지 놀라운 리조트의 객실에 대한 계약을 얻었 기 때문에 오늘 우리는 기록은 우리의 요금 테이블에 삽입하는 데 실패하는 문제가 있었다 보라 보라, 박 수백만 태평양 프랑에 대한 그 판매 ... 데이터베이스 스키마 10 년 전 설계 할 때 anticpated 적이 뭔가있다.
-
==============================
5.응용 프로그램을 회계는 정수로 값을 저장하는 것은 매우 일반적입니다 (일부는 심지어 유일한 방법 말할 정도로 멀리 갈). 아이디어를 얻으려면, 당신이 필요로하는 정확도를 얻기 위해 100, 1000, 10000 등으로 여러 (의는 $ 100.23를 가정하자) 트랜잭션의 양을. 당신은 단지 저장 센트 필요 그냥 곱셈 내 예에서 (100)에 의해 안전하게 라운드 위 또는 아래로, 저장소에 정수로 10023을 만들 것입니다 수 있도록합니다. 당신은 데이터베이스에서 공간을 절약하고 두 개의 정수를 비교하는 두 개의 수레를 비교하는 것보다 훨씬 쉽다 것이다. 내 $ 0.02.
응용 프로그램을 회계는 정수로 값을 저장하는 것은 매우 일반적입니다 (일부는 심지어 유일한 방법 말할 정도로 멀리 갈). 아이디어를 얻으려면, 당신이 필요로하는 정확도를 얻기 위해 100, 1000, 10000 등으로 여러 (의는 $ 100.23를 가정하자) 트랜잭션의 양을. 당신은 단지 저장 센트 필요 그냥 곱셈 내 예에서 (100)에 의해 안전하게 라운드 위 또는 아래로, 저장소에 정수로 10023을 만들 것입니다 수 있도록합니다. 당신은 데이터베이스에서 공간을 절약하고 두 개의 정수를 비교하는 두 개의 수레를 비교하는 것보다 훨씬 쉽다 것이다. 내 $ 0.02.
-
==============================
6.슈퍼 후반 항목 만 GAAP 엄지 손가락의 좋은 규칙입니다 ..
슈퍼 후반 항목 만 GAAP 엄지 손가락의 좋은 규칙입니다 ..
핸들 돈 애플리케이션의 요구가 조까지 값 경우,이 작업을해야합니다 : 13,2 당신이 GAAP (일반적으로 인정되는 회계 원칙)을 준수해야 할 경우 사용 : 13,4
보통은 13,2에 출력의 반올림 전에 13,4에서 돈 값을 요약한다.
출처 : 최고의 데이터 타입은 MySQL의에서 통화 값을 저장하기
-
==============================
7.당신은 당신의 화폐 가치 모두를 위해 기본적으로 DECIMAL (19,2) 같은 것을 사용할 수 있지만 당신은 오직 저장 있을지 값은 귀중한 데이터베이스 공간의 낭비가 될 것이 $ 1,000 이하.
당신은 당신의 화폐 가치 모두를 위해 기본적으로 DECIMAL (19,2) 같은 것을 사용할 수 있지만 당신은 오직 저장 있을지 값은 귀중한 데이터베이스 공간의 낭비가 될 것이 $ 1,000 이하.
N의 값이 이전의 자릿수 적어도 여기서 대부분의 구현, DECIMAL (N, 2)가 충분하다. 가장 큰 합 혹시 당신이 이제까지 999999.99보다 큰 값을 저장하는 기대하지 않는 경우 해당 필드 + 5. 그래서에 저장 될 것으로 예상, DECIMAL (11,2)는 이상의 충분한 (기대 변화까지)이어야한다.
당신이 회계 기준의 준수가되고 싶어요, 당신은 N의 값이 숫자의 개수가 전에 적어도입니다 DECIMAL (N, 4)로 갈 수있다. 가장 큰 합 혹시 해당 필드 + (7)에 저장 될 것으로 예상된다.
-
==============================
8.그것은 데이터의 특성에 따라 달라집니다. 당신은 미리를 숙고 할 필요가있다.
그것은 데이터의 특성에 따라 달라집니다. 당신은 미리를 숙고 할 필요가있다.
MySQL은 할 수 있지만 당신은 규모에 대한 진수 (65,30), (31)를 사용하고 우리는 열린 전송 옵션를 마칠 경우 정밀도 (30)는 우리의 한계 것 같다.
가장 일반적인의 RDBMS에서 최대 규모와 정밀도 :
Precision Scale Oracle 31 31 T-SQL 38 38 MySQL 65 30 PostgreSQL 131072 16383
6, 7, 8, 9
우리는 "그래, 확실히 ... 내가 그 미친 인물이 필요하지 않습니다"라고하는 경향이있다. 음, 짐바브웨도 그런 말을하는 데 사용됩니다. 얼마 전합니다.
의 당신은 짐바브웨 달러로 1 백만 달러의 거래 기록 할 필요가 상상하자 (아마 않을 오늘,하지만 사람이 지금부터 10 년처럼 보일 것입니다 방법을 알고?).
-
==============================
9.이 늦을 수 있지만, 그러나 그것은 누군가 else.From 내 경험에 도움이 될 나는 PHP와 MySQL로 작업 할 때 저놈이 알고 진수 (19, 6)을 받아왔다 연구합니다. 돈과 환율의 많은 양의 작업을 할 때
이 늦을 수 있지만, 그러나 그것은 누군가 else.From 내 경험에 도움이 될 나는 PHP와 MySQL로 작업 할 때 저놈이 알고 진수 (19, 6)을 받아왔다 연구합니다. 돈과 환율의 많은 양의 작업을 할 때
from https://stackoverflow.com/questions/628637/best-data-type-for-storing-currency-values-in-a-mysql-database by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] CTE와 하위 쿼리의 차이? (0) | 2020.03.31 |
---|---|
[SQL] 왼쪽 Where 절과 함께 가입 (0) | 2020.03.31 |
[SQL] 으로 SQL Server 테이블 열에서 문자열을 대체하는 방법 (0) | 2020.03.31 |
[SQL] SQL은 오름차순으로 정렬 할 때 널 (null) 값이 마지막으로 올 수 있도록하는 방법 (0) | 2020.03.31 |
[SQL] 유연한 추상적 인 테이블 대 다수의 열이 하나의 고정 된 테이블 (0) | 2020.03.31 |