Преобразование даты в тики в c # (для запросов хранилища таблиц)

У меня есть хранилище таблиц, где ключ раздела - это тики DateTime, сгенерированные каждую секунду.

Я хочу получить записи с определенной даты, запросив ключи раздела, которые были сгенерированы в это время.

Я думаю, мне нужен способ, когда я поставлю дату и преобразую ее в тики. или есть лучший подход для запроса?

3
nl ja de

2 ответы

Похоже, вам нужно свойство .Ticks в datetime:

http://msdn.microsoft.com/en-gb/ библиотека/system.datetime.ticks.aspx

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

Обратите внимание, что если ключ ключа не генерируется с помощью C#, вам может понадобиться использовать любой механизм, генерирующий тики, чтобы получить ключ с одинаковым уровнем точности, см. Ниже ссылку для примера t-sql:

T-sql, ticks, timestamp

3
добавлено

На самом деле это больше, чем просто использование .Ticks. Я писал об этом некоторое время назад: пакет NuGet для создания и запроса объектов хранения таблиц в (обратном) хронологическом порядке . Пакет NuGet (который поддерживает как старый, так и новый SDK Storage Storage) позволяет создавать сущности на основе текущего времени, а также позволяет запрашивать их (даже поддерживает диапазоны дат).

Creating entities (look at RowKey.CreateChronological)

foreach (var blogPost in BlogReader.Read())
{
    table.Execute(TableOperation.Insert(new Model.BlogPostEntity()
    {
        Author = blogPost.Author,
        PartitionKey = "WindowsAzure",
        PublishedOn = blogPost.PublishedOn,
        Title = blogPost.Title,
        RowKey = RowKey.CreateChronological(blogPost.PublishedOn)
    }));
}

Query entities (look at QueryDateReverseChronologicalComparisons.After)

var ctx = new Microsoft.WindowsAzure.Storage.Table.DataServices.TableServiceContext(table.ServiceClient);
var query = ctx.CreateQuery("ChronoTableStorageSample")
               .Where(QueryDateReverseChronologicalComparisons.After, 
                        DateTime.Parse("2012-12-10 00:00:00"));

foreach (var blogPost in query)
{
    Console.WriteLine("{0:yyyy-MM-dd}: {1}", blogPost.PublishedOn, blogPost.Title);
}
3
добавлено
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot