将DateTime保存为数据库中的字符串

时间:2017-12-12 02:12:32

标签: c# .net .net-core

我的数据库中有一个表格,我将用户的个人资料数据保存为键值对。这对总是字符串。例如:

| Id |    Name   |  Value  | UserId |
|:--:|:---------:|:-------:|:------:|
|  1 | FirstName |   Some  |   55   |
|  2 |  LastName |   One   |   55   |
|  3 | Birthdate |    ?    |   55   |
| 4  | FirstName | Another |   88   |

我有点担心将DataTime数据保存为字符串。是保存DataTime.Ticks.ToString()(然后在需要使用时再将其重新转换为DateTime)安全且好主意?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

不,这是个糟糕的主意。因为你失去了时区而转向蜱虫。 如果您需要将DateTime存储为字符串,请将其转换为timezone

示例:

ID          OBJECT
5637144579  OBJ 1
5637144585  OBJ 2
5637144584  OBJ 3
5637144586  OBJ 4
  

" ZZZ" - 小时和分钟偏离UTC。

DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:sszzz")          // "2017-06-21T14:57:17-07:00"
DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssK")            // "2017-06-21T14:57:17Z"
DateTimeOffset.UtcNow.ToString("yyyy-MM-ddTHH:mm:sszzz")    // "2017-06-21T14:57:17+00:00"

DateTime vs DateTimeOffset