2016-09-29 80 views
1

我使用将日期时间存储在SQL Server数据库中的应用程序。其中一些是以UTC存储的时间点(例如日志项目日期时间),而另一些则是文字日期/时间(例如,“不论您的时区如何,在7月20日下午4点服用药物X,不管您的时区如何)。问题在于它们都具有日期和时间组件,所以使用datetime2列类型对于两者都有意义。现在我们处于应用程序中日期/时间列是否为UTC时间点的情况经常不清楚的情况或文本日期/时间区分使用UTC和本地日期时间的列

什么是最常见的做法这两个情况之间进行区分,我能想到的这些选项:?

1)结束...... UTC UTC的所有列,而文本日期/时间栏没有特别的结尾。

2)在结束...文字全部文字列,而UTC日期/时间列没有特殊的结局。

3)给出UTC列中的数据类型和DATETIME2字面日期/时间列DATETIMEOFFSET。

+0

你可以改变表,添加新列?例如。一个标志栏“isUTC”,显示你是否是UTC时间或不... – Nebi

+0

我经常见到#1(并自己使用它)。我没有看到#2“在野外”。我不会建议#3 – jleach

回答

0

总是尝试先使用适当的类型,然后命名良好。如果datetime2(0)非常合适,请使用它。

在我的系统中,我为列名添加后缀,例如:PlaybackStartedLocal datetime2(0),PlaybackStartedUTC datetime2(0)。在我的情况下,我必须为同一事件存储本地值和UTC值,因为一些报告需要本地值,一些UTC,并且以后很难在它们之间进行转换。

通常它是一种好的做法包括测量单位到塔/变量名。

那你喜欢看:

PlaybackDurationMSec   or PlaybackDuration 
LengthMeters/LengthMiles  or Length 

一个著名的例子,当程序员的两支球队没有注意到,他们的帝国,反之亦然解释度量值:A disaster investigation board reports that NASA’s Mars Climate Orbiter burned up in the Martian atmosphere because engineers failed to convert units from English to metric.

该软件计算出推进器需要在 磅的力中施加的力。一个单独的软件将数据 假设为公制单位:牛顿。

相关问题