Каким будет хороший подход к хранению неточных/неточных дат? ⇐ C#
-
Anonymous
Каким будет хороший подход к хранению неточных/неточных дат?
В приложении, над которым я работаю, мне нужно хранить некоторые метаданные, включающие даты, которые могут быть неточными. В качестве примера предположим, что я хочу сохранить дату выпуска продукта. Несколько примеров возможных дат, которые могут быть в моем наборе данных:
[*]2023-01-10 12:00:00 - мы точно знаем, когда он был выпущен (включая время), например. в это время у них было мероприятие по выпуску [*]10 января 2010 г. – время не знаю, но это была точная дата. [*]2000-01 – точной даты нет, но мы знаем, что это было в январе. [*]2000-1 квартал — точной даты нет, но мы знаем, что это был первый квартал. [*]1995 год — точной даты нет, известен только год. [*]1990-е - мы даже года не знаем, просто это было где-то в 90-х.
Моя цель — предоставить поисковый фильтр, который сможет обрабатывать все эти разные и неточные времена. Для контекста: я работаю на C#/.NET с PostgreSQL.
Я подумываю сохранить неточную дату в виде диапазона DateTime (имеющего «Начало» и «Конец»). Синтаксический анализ в основном означает определение формата (что можно сделать с помощью небольшого количества регулярных выражений) и последующую генерацию диапазона на основе этого. Поиск — это непростая задача. По сути, нам нужно вычислить пересечение этого диапазона и запрашиваемого диапазона; Я не уверен, можно ли это сделать в SQL, но это возможно. Одной из проблем этого подхода является преобразование этой структуры обратно в строку; Я думаю просто сохранить исходную строку, которую я изначально проанализировал.
Как вы думаете, это хороший подход? У вас есть идея получше?
В приложении, над которым я работаю, мне нужно хранить некоторые метаданные, включающие даты, которые могут быть неточными. В качестве примера предположим, что я хочу сохранить дату выпуска продукта. Несколько примеров возможных дат, которые могут быть в моем наборе данных:
[*]2023-01-10 12:00:00 - мы точно знаем, когда он был выпущен (включая время), например. в это время у них было мероприятие по выпуску [*]10 января 2010 г. – время не знаю, но это была точная дата. [*]2000-01 – точной даты нет, но мы знаем, что это было в январе. [*]2000-1 квартал — точной даты нет, но мы знаем, что это был первый квартал. [*]1995 год — точной даты нет, известен только год. [*]1990-е - мы даже года не знаем, просто это было где-то в 90-х.
Моя цель — предоставить поисковый фильтр, который сможет обрабатывать все эти разные и неточные времена. Для контекста: я работаю на C#/.NET с PostgreSQL.
Я подумываю сохранить неточную дату в виде диапазона DateTime (имеющего «Начало» и «Конец»). Синтаксический анализ в основном означает определение формата (что можно сделать с помощью небольшого количества регулярных выражений) и последующую генерацию диапазона на основе этого. Поиск — это непростая задача. По сути, нам нужно вычислить пересечение этого диапазона и запрашиваемого диапазона; Я не уверен, можно ли это сделать в SQL, но это возможно. Одной из проблем этого подхода является преобразование этой структуры обратно в строку; Я думаю просто сохранить исходную строку, которую я изначально проанализировал.
Как вы думаете, это хороший подход? У вас есть идея получше?
Мобильная версия