2016-04-01 4 views
0

Ich habe versucht, eine Tabelle auf diese Weise zu erstellen:Wie Zeit Attribut in SQL erstellen?

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' 
); 

Bin ich richtig über die Zeitfelder auf diese Weise zu schaffen, oder es gibt einige bessere Option?

+0

haben Sie es versucht? – Burki

+0

Was ist deine eigentliche Frage? –

+0

create table anwesenheit (userId char (10) Primärschlüssel nicht null, Name varchar (35) nicht null, date_attendance Datum nicht null, start_time timestamp 'HH24: MI: SS', start_time timestamp 'HH24: MI: SS'); Ich möchte wissen, ob das richtig ist oder nicht? –

Antwort

0

Timestamp wird sowohl Datum als auch Uhrzeit enthalten. Es gibt auch den Datentyp time, der für Ihren Anwendungsfall möglicherweise besser geeignet ist.

CREATE TABLE attendance (
     userId char(10) primary key not null, 
     name varchar(35) not null, 
     date_attendance date not null, 
     start_time time, 
     finish_time time 
); 
+0

create table anwesenheit (userId char (10) Primärschlüssel nicht null, Name varchar (35) nicht null, Datum_Attendanz Datum nicht null, Startzeit 'HH24: MI: SS', Zielzeit 'HH24: MI: SS'); also, meinst du wie oben? Ich habe das geändert. –

+0

@AgusMaloco, Typ "Zeit" wird automatisch "HH: MM: SS" angegeben. – Starx

0

Es ziemlich richtig ist, und eine Sache, die Sie tun können, ist, während ein Datum nicht null gesetzt bieten Sie auch ein Standarddatum, um es durch die Zuordnung getDate oder getUTCDate() -Funktionen, um sie (abhängig von der Anwendung zur Verfügung stellen können Anforderung)

0

Was ist die HH24:MM:SS? Das sieht wie ein Oracle/Postgres-Argument für die TO_CHAR()-Funktion aus.

Vermutlich wollen Sie zwei verschiedene mal und MySQL einen Datentyp für das hat:

create table attendance (
     userId char(10) primary key not null, 
     name varchar(35) not null, 
     date_attendance date not null, 
     start_time time, 
     end_time time 
); 

Du timestamp und time verwirrend. Sie verwenden timestamp, wenn Sie Zeitzoneninformationen in die Spaltenwerte aufnehmen möchten. Ich nehme an, dass Zeitzoneninformationen für Ihre Anwendung nicht wichtig sind.

Dies erlegt die strikte Anforderung, dass jeder Datensatz an einem einzigen Tag attendance ist. Eine Alternative ist nur datetime für beide zu verwenden:

create table attendance (
     userId char(10) primary key not null, 
     name varchar(35) not null, 
     start_time datetime, 
     end_time datetime 
); 

Dies würde die end_time Mitternacht passieren - etwas, das irgendwann nützlich sein könnte.

Außerdem würde ich empfehlen, eine Auto-inkrementierten ganze Zahl für den Primärschlüssel:

create table attendance (
     userId unsigned auto_increment primary key, 
     name varchar(35) not null, 
     start_time datetime, 
     end_time datetime 
); 

Schließlich, wenn Sie ein Datum/Zeit/Datumzeit als String formatiert werden sollen, date_format() verwenden.

+0

Ok, ich werde es versuchen. danke trotzdem –