Azure Storage TableをTimeStampを使ってクエリする

こちらの記事でAzure Storage Tableの操作に関して書きましたが、PowerShellからテーブルのエントリに付いているTimeStampの値を使ってクエリしようとして少し引っかかった部分があったので残しておきます。


PowerShellでAzure テーブル ストレージ を操作する(Insert,Query etc) - YOMON8.NET

 
 
 

結論から言えば、フィルターに渡すDataTimeの文字列の書式を以下のようにODataの形式に沿って正しく書くのがポイントです。

Timestamp gt datetime'2015-02-21T09:54:43'


サンプルとしてPowerShellを使ってAzure Storage Tableから1日前から最新までのエントリを取得する方法を書きます。

$context = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccessKey
Get-AzureStorageTable -Context $context
$table = Get-AzureStorageTable -Context $context -Name $TableName

$t = (Get-Date).AddDays(-1)
$edmdatetime = $t.ToString("yyyy-MM-ddTHH:mm:ss") # 例:2015-02-21T09:54:43:52

$query = New-Object -TypeName Microsoft.WindowsAzure.Storage.Table.TableQuery
$query.FilterString = "Timestamp gt datetime'{0}'" -F $edmdatetime  # 例:Timestamp gt datetime'2015-02-21T09:54:43:52'
$table.CloudTable.ExecuteQuery($query)