2009-05-20 6 views
3

SQL Server 2005에 날짜 시간 필드가있는 테이블이 있습니다. mm/dd/yyyy hh:mm:ss 형식으로 날짜 시간 값을 저장하려고하지만 SQL Server에서 날짜 시간을 yyyy-mm-dd HH:mm:ss.ll 형식으로 허용합니다.SQL Server datetime 데이터 형식이 많은 형식을 허용하지 않습니다.

날짜 시간 값을 mm/dd/yyyy hh:mm:ss 형식으로 varchar로 저장할 수 있지만 그 날짜 시간 필드에서 표를 정렬하려는 의도가 없습니다.

내 접근 방식에 뭔가 빠졌습니까? 어떤 제안?

환호

답변

7

귀하가 주장하는대로 날짜 시간 유형은 이 아니며yyyy-mm-dd HH:mm:ss.ll에 저장됩니다.

날짜 시간 열은 8 바이트 이진 데이터로 저장됩니다. yyyy-mm-dd HH:mm:ss.ll 형식은 쿼리에서 반환되는 형식입니다. 다른 형식으로 표시하려면 CONVERT 기능을보십시오.

+0

두 배 정밀도 부동 소수점, 일반적으로 32 비트라고 생각했습니다. 그러나 내가보기 ... –

+0

IEEE했다 이후 오랜 시간이 지났 754 부동 소수점 정밀도 절반 (16 비트) 싱글 (32 비트) 더블 (64 비트) 쿼드 러플 (128 비트) 오! 다시 승리 : –

+1

이것은 datatetime을 float 및 floor()로 캐스팅하는 것이 시간 부분을 잘라내는 가장 빠른 방법입니다. 복잡한 문자열 또는 날짜 계산보다는 모든 비트 이동이 필요합니다. –

2

당신과 같이 선택하면이 날짜 스타일을 지정할 수 있습니다 :

당신이 그것을 얻을 때 날짜를 포맷 할 수 있습니다
convert(varchar, [datefield], style) 

. 이렇게하면 서식을 쉽게 저장할 수 있습니다.

사용할 수있는 모든 스타일이 list입니다.

0

날짜가 실제로 특정 형식으로 저장되지는 ​​않습니다. 기본 형식 또는 선택한 형식으로 표시됩니다.

어디서 '만나요'? 응용 프로그램에는 SQL Server Management Studio와 동일한 날짜가 표시되지 않을 수 있습니다. 사용자가이 저장 될 수 있도록 날짜를 포맷하는 방법

은 (한은이 서버에 유효한 날짜를 전송한다.)뿐만 아니라 당신의 응용 프로그램에 대한 문제입니다.

0

특정 날짜/시간 형식을 유지하도록 데이터베이스를 강제 설정하지 않았 음을 인정해야합니다. 나는 그것이 정말로 필요하지 않다고 생각한다.

날짜/시간 필드가있어서 데이터를 정렬 할 수 있습니까? DBMS에서 필요한만큼의 것입니다. 애플리케이션의 프리젠 테이션 레이어에서 최종 포맷을 수행하십시오.

관련 문제