2013-01-07 11 views
1

스크립트 Db에서 다음 쿼리를 실행하고 있습니다. 문자열로 'M/d/yyyy'로 찾고있는 날짜를 저장하고 있습니다. lookUp은 정상이며 필요한 모든 항목을 반환하지만 정렬 순서는 월 또는 연도가 아닙니다.ScriptDb 날짜 쿼리 및 내림차순 정렬

var result = db.query({"p1arSn":e.parameter.search}).sortBy("maintAccomplishedDate", db.DESCENDING); 

감사의 말씀 감사합니다!

+0

그냥 생각. 날짜 문자열을 yyyy-mm-dd로 저장할 수 있다면 정렬은 훨씬 간단합니다. 좋은 일이. – ScampMichael

답변

2

sortBy를 사용하여 문자열로 저장된 날짜를 정렬 할 수 없습니다. 옵션은,

  1. 가 정렬되지 않은 데이터를 검색 할 수 있습니다 배열에 복사 등) (자신에 Array.sort 사용하거나
  2. 는 ScriptDb에에 저장하는 것을 변경할 수 있습니다.

옵션 1은 더 간단하지만 페이징되거나 제한된 데이터를 검색하는 경우 검색 후 정렬을 수행하는 것이 원하지 않는 옵션입니다.

옵션 2는 조금 더 어렵습니다. ScriptDb에 날짜를 저장할 때 타임 스탬프를 저장하십시오 (날짜에는 getTime()이 있습니다). 그것들은 정렬 될 수있는 숫자입니다.

이 같은 날짜 문자열 중 하나에서 타임 스탬프를받을 수 있습니다

var timestamp = new Date('3/5/1983').getTime() // 415688400000 

당신은 다음과 같이 원래의 문자열을 얻을 수 있습니다 :

var d = new Date(415688400000); 
var string = [d.getMonth() + 1, d.getDate(), d.getYear()].join('/'); 
+0

고마워요. Corey .. 필자는 스크립팅 기간을 처음 사용하면서도 코딩에 대한 모범 사례를 파악하고 있습니다. 나는 그런 방식으로 데이터베이스를 재실행 할 것이다. 내가 틀렸다고 정정 해 주겠지 만, scriptDb의 각 레코드를 반복하여 "maintAccomplishedOn"속성을 올바로 업데이트 할 수 있어야합니까? – LennyZ71

+0

그래야 효과가 있습니다. –