以可在 Azure 移动服务 (Javascript) 中查询的方式保存日期时间
本文关键字:查询 方式 保存 时间 日期 Javascript Azure 移动 服务 | 更新日期: 2023-09-27 18:35:26
我想将 DateTime 值保存到 Azure 移动服务后端 (javascript),但如果将其另存为 DateTime,则无法查询该日期。我想这样做的原因是因为我想检索特定日期范围内的所有项目。我尝试将它们保存为即时报价,但这也不起作用,因为数值很大。
有人有想法吗?
这是
不正确的 - 如果您在JS后端中保存日期时间(日期)值,则可以根据该日期进行查询。所有关系操作(>=, <=, <, >, ==, !=
)都使用日期值查找。
例如,在下面的JS代码中(对于具有名为so
的表的服务),它可以插入4个日期,并发送一个范围查询,该查询将返回两个中间日期。
<html>
<head>
<title>Test site</title>
<script src="http://ajax.aspnetcdn.com/ajax/mobileservices/MobileServices.Web-1.2.5.min.js"></script>
</head>
<body>
<h1>Playing with Azure</h1>
<button onclick="insertData();">Insert data</button>
<button onclick="readData();">read data</button>
<ul id='results'></ul>
<script type="text/javascript">
var client = new WindowsAzure.MobileServiceClient(
"https://SERVICENAME.azure-mobile.net/",
"APPLICATIONKEY"
);
var table = client.getTable("so");
function handleError(err) {
addLog('Error: ' + err);
}
function addLog(text) {
var ul = document.getElementById('results');
var li = document.createElement('li');
li.appendChild(document.createTextNode(text));
ul.appendChild(li);
}
function insertData() {
table.insert({ myfield: 12, date: new Date(2014, 11, 1) }).then(function() {
addLog('Inserted data in December');
table.insert({ myfield: 11, date: new Date(2014, 10, 1) }).then(function() {
addLog('Inserted data in November');
table.insert({ myfield: 10, date: new Date(2014, 9, 1) }).then(function() {
addLog('Inserted data in October');
table.insert({ myfield: 9, date: new Date(2014, 8, 1) }).then(function() {
addLog('Inserted data in Setember');
}, handleError);
}, handleError);
}, handleError);
}, handleError);
}
function readData() {
var firstDate = new Date(2014, 8, 15);
var lastDate = new Date(2014, 10, 15);
table.where(function(firstDate, lastDate) {
return this.date >= firstDate && this.date <= lastDate;
}, firstDate, lastDate).read().done(function(results) {
addLog('Results.length: ' + results.length);
for (var i = 0; i < results.length; i++) {
addLog('Results[' + i + ']: ' + JSON.stringify(results[i]));
}
}, handleError);
}
</script>
</body>
</html>
也可以为托管客户端编写类似的代码。尚未编译它(用记事本编写),但它看起来有点像下面的代码:
private static MobileServiceClient client = new MobileServiceClient(
"https://SERVICENAME.azure-mobile.net", "APPLICATION_KEY");
private static IMobileServiceTable<MyType> table = client.GetTable<MyType>();
private async void InsertData_Click(object sender, EventArgs args) {
for (int month = 12; month >= 9; month--) {
var date = new DateTime(2014, month, 1, 0, 0, 0, DateTimeKind.UTC);
await table.InsertAsync(new MyType { date = date, myfield = month });
}
}
private async void ReadData_Click(object sender, EventArgs args) {
var firstDate = new DateTime(2014, 9, 15, 0, 0, 0, DateTimeKind.UTC);
var lastDate = new DateTime(2014, 11, 15, 0, 0, 0, DateTimeKind.UTC);
var items = await table
.Where(t => t.date >= firstTime && t.date <= lastTime)
.ToListAsync();
foreach (var item in items) {
AddLog("Read item: " + item);
}
}
public class MyType {
public string id { get; set; }
public DateTime date { get; set; }
public int myfield { get; set; }
}