#c# #datetime #storage
#c# #дата-время #Хранение
Вопрос:
Пожалуйста, скажите мне, хорошо ли хранить дату-время, например, время создания записей, на сервере в тиках?
DateTime.Ticks
Комментарии:
1. Что плохого в том, чтобы просто сохранить его как
DateTime
? И если вы не можете, то, возможно, лучше сохранить его в виде строки, как в XML, потому что при его разборе не возникает сомнений. Ticks — это число с неизвестного момента времени, что, если этот момент отличается в разных культурах / серверах / системах?2. Что не так с сохранением в формате DateTime? отметки будет сложнее прочитать, если вы просматриваете данные в таблице
3. Я не хочу сохранять его в форматированной строке;) Мне легко манипулировать значениями Int64;)
4. Ваша причина, по которой вы не делаете это «правильным» способом, ошибочна (на самом деле у вас нет причины), помимо «вы не хотите этого делать» и «это проще», конечно, проще, то, как вы знаете, как это сделать, не означает, что это правильный способ. Кроме того, вы спросили, было ли это «хорошо», и простой ответ — это плохой и неэффективный метод.
Ответ №1:
Если нет никаких шансов, что кто-либо когда-либо захочет просмотреть сохраненные данные вручную, или есть особые требования к этому уровню точности, тогда прекрасно. Но, как правило, мне это не нравится, смотреть на данные о днях в базе данных, когда дата находится в каком-то неясном формате, — это боль!
Ответ №2:
Зачем вам это делать? Нет никаких штрафных санкций за сохранение его как обычного DateTime. Лучший вопрос, который вы должны задать себе, заключается в том, как вы будете обрабатывать разные часовые пояса.
Мы храним все даты в базе данных как UTC и выполняем соответствующее преобразование на основе часового пояса, выбранного пользователем, или часового пояса сервера. Обычно выбирается пользователем, потому что пользователю имеет больше смысла обрабатывать время в его собственном часовом поясе, но тогда данные будут использоваться людьми в разных часовых поясах.
Ответ №3:
Каждая современная база данных имеет DATETIME
, DATE
и / или TIMESTAMP
типы данных, поэтому нет необходимости использовать Int64
.
Но вы могли бы использовать DateTime.Ticks
, например, при сохранении данных в текстовый файл. Кажется, это хороший вариант в этом случае.