我该如何最好地命名我的时间戳字段?


57

当我想创建一些时间戳字段(或其他日期/时间样式字段)时,命名它们的最佳方法是什么?我应该只放record_timestamp吗?

Answers:


42

您应该描述列的用途,而不一定是数据类型。您可以在名称中包括日期/时间/时间戳,但也应包括含义。例如

  • 创建日期
  • 开始日期
  • 状态时间
  • 已访问
  • 更新

在末尾添加日期/时间/时间戳等时,如果添加的缺席将与另一列冲突,则特别有用。例如,一个表可能同时需要一个Status和一个StatusTime。


2
只是加上我的两分钱。我使用了许多旧的MRP系统,发现经常使用CreatedOnUtc和UpdatedOnUtc。
Geovani Martinez

6
我认为“已访问”和“已更新”可能是模棱两可的,因为它也可能暗示布尔值(至少在Ruby世界中如此)
Artur Beljajev

2
@GeovaniMartinez可能会造成混淆,因为许多SQL数据库(包括PostgreSQL)存储在UTC并读取客户端的时区。
埃文·卡罗尔

如果时间单位应该是UTC vs System Local,则在列名称中指定_UTC。感谢我们所有人,他们以后必须维护代码。
乔纳森·菲特

访问和更新可能与世界卫生组织的访问或更新不明确,这是很常见的跟踪事件
Joe Phillips

27

怎么样xyz_attimestamp,并xyz_ondate现场-如start_atstart_on

通常,我会避免在字段名称中包含数据类型-如果您可以从任何字段的名称(称为的字段description不太可能是integer)中推断出您需要了解的类型,那就更好了-但能够告诉您a timestamp和a 之间的差异date通常会有所帮助。


16

我用:

  • created_at
  • Updated_at

2
“在”也可以暗示位置。那么“何时”而不是“在”呢?
2013年

1
在法律和财务文件中经常使用“ at”或“ at at”来指代什么时候发生。english.stackexchange.com/questions/112770/…–
尼尔·麦圭根

3
它仍然可能是模棱两可的。如果您需要知道更新的时间和位置怎么办?updated_at可能是。但是我认为答案是,就像通常使用命名一样,使用最简洁的名称来消除所有现实的歧义。也就是说,如果在特定情况下可能会造成某种混乱,请消除它,但不要使用比要求的更为冗长的名称
nafg

1
怎么样?尽管它意味着一个约会
Joe Phillips

6

我查看了您的配置文件,并说您使用的是SQL Server,在SQL Server中,TIMESTAMP数据类型与日期或时间无关,它用于标记行的版本。这对于识别从给定时间点修改了哪些行非常有用。

如果使用TIMESTAMP,则不必指定列名,SQL Server会为您创建一列“ TimeStamp”。但是建议使用“ ROWVERSION”数据类型,在这种情况下,您必须指定列名。

这样的列的最佳名称是什么?这要看情况,我会使用像VersionStamp,RV之类的东西。我认为重要的不是您的名字,而是您是否一贯地使用它。

高温超导

参考:http : //msdn.microsoft.com/zh-CN/library/ms182776( v= sql.90).aspx

http://msdn.microsoft.com/en-us/library/ms182776.aspx



1

我更喜欢为日期戳使用DT的前缀。例如:DTOpened,DTClosed,DTLastAccessed。这使我可以列出所有DTxxxx,以便快速参考给定表中的所有日期戳。



1

我更喜欢使用已经存在的约定。

Unix和编程语言具有被广泛接受的mtime修改时间”约定

为了创造时间,

  • BSD和Windows使用生日
  • Windows还使用创建时间
  • xstat的用途 btime
  • ext4的用途 crtime
  • JFS和btrfs使用otime(不要问,猜测是“原始”)。

因此,对于我来说,我选择mtimecrtime对于元数据。

对于用户提供的数据,我会使用该字段表示的内容。如果是生日,我就说user_birthday

就精度而言,对于某些人来说,似乎过于精确。您可以将您birthdate的时间戳记存储为时间戳(毕竟,从技术上来说,您是一天中的某天出生的),但是SQL规范已将精度从较高的精度转换为较低的精度,因此,如果您使用的是体面的数据库,这应该不成问题。在应用本身中,您随时可以在需要时截断。就是说,我永远不会去birthday_date



0

为了保持列名的一致性,建议您使用以下语法:

dateCreated
dateUpdated
dateAccessed
dateStarted
date...

0

正如@Evan Carroll所建议的那样,请遵循现有标准,除非您有充分的理由打破这种模式。

如果这是新事物,那么您可以按照任何最适合您的答案进行操作。

我使用* _on和* _by是因为它有助于我使行的时间和对象保持一致:

- created_on & created_by
- updated_on & updated_by
- deleted_on & deleted_by -- soft delete
- approved_on & approved_by
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.