2016-06-20 8 views
0

So ein schneller Überblick über das, was ich tue: Wir speichern derzeit Ereignisse in Azure Table-Speicher von einem Node.js Cloud-Dienst mit dem "azurblau "Speicher" npm Modul. Wir speichern unsere eigenen Zeitstempel für diese Ereignisse im Speicher (im Gegensatz zur Verwendung des von Azure definierten Ereignisses).Erzwingen eines Zeichenfolgefelds auf DateTime in WCF-Abfrage mit Azure-Tabellenspeicher

Nun haben wir ein generisches Storage-Handler-Skript programmiert, das im Moment nur alle Werte als Strings speichert. Um das Refactoring dieses Skripts zu sparen, hatte ich gehofft, dass es eine Möglichkeit geben würde, stattdessen die Abfrage zu optimieren.

Also meine Frage ist, ist es möglich, nach Datetime abzufragen, wo der gespeicherte Wert nicht tatsächlich ein Datetime-Feld und stattdessen eine Zeichenfolge ist?

Meine ursprüngliche Abfrage unter anderem:

.where("_timestamp ge datetime'?'", timestamp); 

In dem obigen Code muss ich irgendwie die Abfrage treat _TimeStamp als Datums haben anstelle einer Zeichenfolge ...

wäre so etwas wie die folgenden arbeiten oder was ist der beste Weg?

.where("datetime _timestamp ge datetime'?'", timestamp); 

Antwort

1

AFAIK, wenn der Attributtyp String in einer Azure Tabelle ist, können Sie das nicht zu DateTime konvertieren. So werden Sie nicht in der Lage sein, .where("_timestamp ge datetime'?'", timestamp);

verwenden Wenn Sie Ihr _timestamp in yyyy-MM-ddTHH:mm:ssZ Format sind zu speichern, dann könnte man einfach eine Zeichenfolge Abfrage tun wie

.where("_timestamp ge '?'", timestamp); 

und das sollte gut andere arbeiten als Die Tatsache, dass diese Abfrage einen vollständigen Tabellenscan durchführt, ist keine optimierte Abfrage. Wenn Sie jedoch in einem anderen Format speichern, erhalten Sie möglicherweise andere Ergebnisse.

+0

Meine Zeitstempel sind im ISO-Format in Ordnung, aber würde "ge" hier wie erwartet funktionieren, wenn Strings und nicht DateTimes verglichen werden? – Mitch

+1

Ja, es würde problemlos funktionieren, solange Ihre Zeitstempelwerte im Format "JJJJ-MM-TTHH: MM: SSZ" sind. –

+0

https://en.wikipedia.org/wiki/ISO_8601#General_principles Nun, ich werde verdammt sein. Du lernst jeden Tag etwas Neues. Das kann gut funktionieren. Zugegeben, es ist weniger effizient, aber wird mich über den Berg bringen. Vielen Dank! – Mitch