2016-03-21 6 views
1

werktwelのこの文字列は問題ないのですが、werktnietの文字列は私のクエリで使用するときではありません。構成された文字列を使用する

ログに記録すると同じことが分かります。 "2016-03-21*"とタイプは両方ともstringです。これもログに記録されます。

// create data 

declareUpdate(); 
xdmp.documentInsert(
     "/example.json", 
     {"meting": "783", "bericht": "553", "plant": "01", "timestamp": "2016-03-21T22:32:30.361756"}, 
     xdmp.defaultPermissions(), 
     xdmp.defaultCollections(), 
     10) 

// query 
var nu = new Date(); 
var beteredatum = nu.getFullYear() + "-" + (Number(nu.getMonth())+1) + "-" + nu.getDate(); 
var werkniet = beteredatum + "*"; 
var werktwel = "2016-03-21*"; 
var a = cts.search(cts.jsonPropertyValueQuery("timestamp", werkniet, "wildcarded")).toArray(); 
xdmp.log(xdmp.type(werkniet)); 
a 

答えて

1

月間で働いた方法は大丈夫ではありませんでした。これはうまく動作します。修正はgetMonthのスライスにあります。

// query 

declareUpdate(); 
xdmp.documentInsert(
     "/example.json", 
     {"meting": "783", "bericht": "553", "plant": "01", "timestamp": "2016-03-21T22:32:30.361756"}, 
     xdmp.defaultPermissions(), 
     xdmp.defaultCollections(), 
     10) 

// query 
var nu = new Date(); 
var beteredatum = nu.getFullYear() + "-" + ("0" + (nu.getMonth() + 1)).slice(-2) + "-" + nu.getDate(); 
var werkniet = beteredatum + "*"; 
var werktwel = "2016-03-21*"; 
var a = cts.search(cts.jsonPropertyValueQuery("timestamp", werkniet, "wildcarded")).toArray(); 
xdmp.log(xdmp.type(werkniet)); 
a 
4

Date.toISOString()の使用を検討してください:

var now = new Date(); // Mon Mar 21, 2016 
var isoNow = now.toISOString(); // 2016-03-21T12:20:56Z 
var now2 = new Date(isoNow); // Mon Mar 21, 2016 

HTH!

2

これまでに試したところ、10月か11月か12月かと思われます。 (10,11,12)。あなたの修正には、月が2桁以上になるように強制的に "0"が付加され、文字列に変換されることに注意してください。したがってスライス(-2)は常に最後の2桁を生成します。

しかし、可能であれば、特にサブコンポーネントの場合は、文字列の操作ではなく、組み込みのdate関数とdateTime関数を使用することをお勧めします。 xs.dateとxs.dateTimeからの変換は、数値で固定されたISO8601の仕様に従うので、より簡単に分解されて構成されます。 例:「2016-02-21T11:22:33.012-03:00」(dateTime)または「2016-01-21」

dateTimeの日付部分(Betteratum)を文字列として取得する例を簡略化することができます

var werkniet = fn.adjustDateToTimezone(fn.currentDate(), null) + "*" 

または

fn.substring(fn.currentDate()+"" , 0, 11) 

または

fn.formatDate(fn.currentDate(),"[Y0001]-[M01]-[D01]*") 

としてあなたがstrinする数で作業する場合g変換fn.formatNumber(またはxdmp.formatNumber())はよく定義されており、固定幅に0パディングを提供することをお勧めします。

例えばあなたが組み込みFNに固執する場合は0パディング数

fn.formatNumber(fn.dayFromDate(fn.currentDate()),"00") 

として日取得します。またはxdmp。 +/- 1、よく定義された文字列を数値または日付に変換し、日付を予期するすべてのマークロジック関数に対して正しい形式を生成します。

関連する問題