我试着这样创建一个表:
create table attendance (
userId char(10) primary key not null,
name varchar(35) not null,
date_attendance date not null,
start_time timestamp 'HH24:MI:SS',
finish_time timestamp 'HH24:MI:SS'
);
我这样创建时间字段是对的吗?还是有更好的选择?
3条答案
按热度按时间ee7vknir1#
这是非常正确的,您可以做的一件事是,在提供一个非空的日期设置时,您还可以通过向其分配getDate或getUTcDate()函数来为其提供默认日期(取决于应用程序的要求)
x0fgdtte2#
HH24:MM:SS
是什么?它看起来像TO_CHAR()
函数的Oracle/Postgres参数。假设您需要两个不同的 times,而MySQL有一个相应的数据类型:
您混淆了
timestamp
和time
。当您希望在列值中包含时区信息时,您使用了timestamp
。我猜时区信息对您的应用程序并不重要。这就严格要求每个
attendance
记录都在一天内。另一种方法是将datetime
用于两个记录:这将允许
end_time
度过午夜--这在某些时候可能是有用的。此外,我建议对主键使用自动递增的整数:
最后,当您希望将日期/时间/日期时间格式化为字符串时,请使用
date_format()
。xqk2d5yq3#
Timestamp
将同时保存日期和时间。还有数据类型time
,它可能更适合您的用例。