날짜순으로 정렬해야하지만 날짜는 데이터베이스에 텍스트로 저장됩니다. 엔티티에 Linq를 사용하여 쿼리를 수행합니다.Linq : 텍스트로 저장된 날짜순 정렬
데이터베이스가 설계된 방식으로 많은 다른 데이터 형식이 해당 열에 있기 때문에 열을 날짜 열로 변경할 수 없습니다. 특정 행이 어떤 유형인지 알 수 있도록 type
이라는 하위 항목이 있습니다.
날짜순으로 정렬해야하지만 날짜는 데이터베이스에 텍스트로 저장됩니다. 엔티티에 Linq를 사용하여 쿼리를 수행합니다.Linq : 텍스트로 저장된 날짜순 정렬
데이터베이스가 설계된 방식으로 많은 다른 데이터 형식이 해당 열에 있기 때문에 열을 날짜 열로 변경할 수 없습니다. 특정 행이 어떤 유형인지 알 수 있도록 type
이라는 하위 항목이 있습니다.
당신은 추가 할 수 있습니다 .. 그것에서 보기를 구축 할 수있는 discriminator가 특정 값을 가지고있을 때 날짜로 그 문자열을 변환 할 테이블에 계산 열 (여기서는 단지 'date'
을 사용했습니다).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
당신은 시간 정보를 가지고 있다면, date
는 CONVERT()
기능에 datetime
해야한다.
또한 101
은 예상되는 형식이 MM/dd/yyyy
임을 나타내는 스타일 코드입니다. 다른 값이 있으면 http://msdn.microsoft.com/en-us/library/ms187928.aspx을 참조하십시오. 그러나 100보다 작은 스타일을 사용하면 표현식이 비 결정적이라고 간주되어 계산 열 PERSISTED
을 만들 수 없기 때문에 전환이 즉시 수행됩니다. 각 쿼리와 함께 (당신은 그것을 원하지 않는다).
계산 된 열은 행 값이 변경되면 자체적으로 업데이트됩니다. 그렇지 않으면 값은 다른 열과 마찬가지로 유지되고 쿼리 가능합니다. 트리거가 필요하지 않습니다.
와우. 좋은. 하나 더. 해당 열에 색인을 추가 할 수 있습니까? 날짜, 정수, 문자열 및 기타 데이터 유형을 저장합니다. 다른 데이터 형식으로 열을 인덱스 싶습니다. 이것이 가능한가? – Luke101
@ Luke101 다른 데이터 형식을 가진 열은 인덱싱 할 수 있지만 varchar로만 인덱싱됩니다. 명확하게하기 위해, 계산 된 열은 식별자가 날짜를 나타내는 날짜와 그렇지 않은 경우에만 날짜를 포함하는 * added * 열입니다. 여기에 설명 된대로 계산 열에 인덱스를 만들 수 있습니다. http://msdn.microsoft.com/en-us/library/ms189292.aspx – Jay
날짜를 포함하는 모든 행이 동일한 날짜 형식을 사용하는 경우 문자열 값으로 주문할 수 있습니다. 그러나 가장 일반적인 (즉, 영어) 날짜 형식이 해와 함께 시작하지 않기 때문에 문제가 될 수 있습니다.
옵션 A : 메모리를 정렬하십시오.
var records = db.YourTable.Where(o=>o.Discriminator =="date").AsEnumerable()
.Select(o=>new {Entity= o, Date=DateTime.Parse(o.YourColumn)})
.OrderBy(o.Date).Select(o=>o.Entity);
당신이 행을 많이 가지고, 또는 당신이있는 경우, 적어도 주문 결과를 캐시 할 수있는 품위있는 경우 ...
옵션 B를이 작업을 수행하지 마십시오 : 데이터베이스 마법
DB에 추가 열을 추가하고 THAT 날짜 (null 입력 가능)를 만들고 discriminator가 날짜 인 경우 업데이트하십시오. 당신은 (DML) 트리거에 업데이트 할 수 있습니다 중 하나 또는 변환이 간단 경우 C# ...
또는에서 당신은
날짜가 아닌 값으로 무엇을하고 싶습니까? 그들을 버려? – Otiel
데이터 열이 – Luke101
인 @ Luke101이 데이터베이스에서 모든 레코드를 먼저 검색 한 다음 해당 목록에 대한 작업을 수행 하는지를 알려주는 다른 열에 형식을 갖기 때문에 쿼리에서 데이터 값만 선택하게됩니다 (정렬과 같은 ...) –