mssql datetime 데이터타입에서 포맷을 지정하여 저장할 수 있나요?
mssql datetime 이라는 데이터 형식에 날짜를 저장하는데
여러 데이터를 저장하면 datetime에서 나노초(?) 단위에서 차이가 발생해
중복 제거가 안되는 듯 합니다.
혹시 데이터베이스의 데이터타입에서 나노초를 제거하여 저장 할 수 있는 방법이 있나요?
아니면 여러 데이터 중 한 테이블을 기준으로 중복제거를 하는 방법이 있을까요?
사용 언어는 .net core를 사용하며 Distinct()함수를 이용하였습니다.
datetime에는 "년도-월-일-시간-분" 까지만 저장되면 좋겠습니다.
- DateTime 구조체에서 Distinct()를 사용시 특정 프로퍼티를 선택해서 select를 할 수 있습니다. - (아래 예에서는 Orders에는 DateTime 타입의 프로퍼티인 OrderDate라는 필드가 있다고 가정합니다.) - 만약 연도를 기준으로 distinct 를 한다면 아래와 같이 짤 수 있을 것입니다. var uniqueYears = db.Orders.Select(s => s.OrderDate.Year).Distinct();- 질문에서 연도, 월, 일, 시간, 분까지만 Distinct() 하고 싶으신 것이므로 해당 조건으로만 대상을 줄이면 되겠습니다. - 아래의 코드에서는 DateTime(Int32, Int32, Int32, Int32, Int32, Int32) 생성자를 이용하였습니다. var uniqueYears = db.Orders .Select(s => new DateTime(s.OrderDate.Year, s.OrderDate.Month, s.OrderDate.Month, s.OrderDate.Hour, s.OrderDate.Minute, 0)) .Distinct();
- 일반적으로 사용하는 방식으로 시간 + 시퀀스 넘버링이 가장 안전하고 정확한 것으로 알고 있습니다. - 데이터 타입 나노초를 제거한다고하여, 해당 값이 완전히 중복 값을 제거 했다는 무결성을 보장할수 없기 때문입니다. - 따라서 사용하고 있는 시간에다가 시퀀스 넘버링을 추가하는 방법을 고안하는 것이 더 좋을 것 같습니다. - 데이터 처리 속도 보장보다는 데이터 무결성이 더 중요 합니다. 
- SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') --20210328 , TO_CHAR(SYSDATE, 'YYYY/MM/DD') --2021/03/28 , TO_CHAR(SYSDATE, 'YYYY-MM-DD') --2021-03-28 , TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') --2021-03-28 11:10:52 FROM dualYYYY: 년, MM: 월, DD: 일, HH24: 24시간, HH: 12시간, MI: 분, SS:초 
- 안녕하세요. - 1. 우선 중복 제거를 해야하는 데이블의 데이터에 datetime 형태의 컬럼이 포함되지 않는다면 해당 컬럼을 제외하고 조회하여 중복제거를 하시면 될 것으로 보입니다. - 2. 이야기 하신 것 보면 데이터를 insert 시 datetime 컬럼에 insert 시간을 넣는 것 같은데 시간을 넣을 때 getdate() 같은 함수를 사용 하신다면 해당 함수로 가져와서 변형해서 넣으면 될 것으로 보입니다. - 3. 마지막으로 위 두가지를 사용하지 않으려면 데이터 insert 후 조회 시 해당 컬럼의 데이터에서 분 이하를 제외하고 조회하시면 될 것 같습니다. 
- datetime 컬럼 데이터 타입으로 설정해서 select 조회를 하면 말씀대로 년월일 시분초가 표시되어서 - 일반적으로 중복 제거가 안됩니다. - 해당 문제를 해결하려면 mssql 에 convert를 사용하면 해결 할 수 있습니다. - select convert(varchar(16), getdate(), 120) 로 하시면 년-월-일 시:분 으로 표시가 되어서 중복 제거가 가능하실 겁니다. 
- 테이블 날짜 컬럼에 저장할때 convert 해서 밑에 방식으로 저장을 하면 - 초까지만 저장 되기 때문 distint 해도 초단워로 분류가 되서 문제가 없을같습니다. 
 CONVERT(CHAR(19), DATETIME, 120)- 2000-01-02 13:14:15 - YYYY-MM-DD HH:MM:SS 
- 안녕하세요 - Mssql에서 원하시는 데이터를 얻기 위해서 아래와 같이 사용하시면 원하는 년도,월,일,시간,분까지 나올 것입니다. - 24시를 기준으로 하는 것임을 참고 부탁드립니다. - convert(varchar(16), getdate(), 120) - Datetime 변환하는 형식이 많으니 찾아서 원하시는 결과 얻으시길 바래요!