2016-06-20 5 views
0

Итак, краткий обзор того, что я делаю: В настоящее время мы сохраняем события в Azure Table storage из облачной службы Node.js, используя «azure» -storage "модуль npm. Мы сохраняем наши собственные временные метки для этих событий в хранилище (в отличие от использования определенного Azure).Задание строкового поля DateTime в WCF-запросе с использованием хранилища таблиц Azure

Теперь мы закодировали общий сценарий обработчика хранилища, который на данный момент просто сохраняет все значения в виде строк. Чтобы сохранить рефакторинг этого сценария, я надеялся, что вместо этого вы попытаетесь настроить запрос.

Итак, мой вопрос в том, можно ли запросить datetime, где хранимое значение на самом деле не является полем datetime, а вместо этого является строкой?

Мой первоначальный запрос включены следующие:

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

В приведенном выше коде мне нужно как-то иметь лакомство запрос _timestamp как DateTime вместо строки ...

бы что-то вроде следующего работать, или что это лучший способ сделать это?

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

ответ

1

AFAIK, если тип атрибута String в Azure Table, вы не можете преобразовать его в DateTime. Таким образом, вы не сможете использовать .where("_timestamp ge datetime'?'", timestamp);

Если вы храните _timestamp в yyyy-MM-ddTHH:mm:ssZ формате, то вы можете просто сделать строку запроса, основанную как

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

и что должно работать нормально, кроме тот факт, что этот запрос будет выполнять полное сканирование таблицы и не будет оптимизированным запросом. Однако, если вы сохраняете какой-либо другой формат, вы можете получить разные результаты.

+0

Мои временные метки хранятся в формате ISO в порядке, но будет ли «ge» работать, как ожидалось, при сравнении строк, а не DateTimes? – Mitch

+1

Да, это будет работать очень хорошо, пока ваши значения timestamp находятся в формате 'yyyy-MM-ddTHH: mm: ssZ'. –

+0

https://en.wikipedia.org/wiki/ISO_8601#General_principles Ну, я буду проклят. Ты узнаешь что-то новое каждый день. Это может работать хорошо. Предоставленный его менее эффективный, но получит меня над горбом. Благодаря! – Mitch