Добавление нескольких временных меток в базу данных MySQL

78
7

Я разрабатываю систему управления посещаемостью, в которой я хочу своевременно хранить штамп и выбивать время как временную метку в базе данных. Запрос для таблицы выглядит так:

CREATE TABLE IF NOT EXISTS 'punchdetails' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'employeeid' int(11) NOT NULL,
'punchin' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
'punchout' timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
'SERVER_ADDRIN' varchar(40) NOT NULL,
'REMOTE_ADDRIN' varchar(40) NOT NULL,
'REQUEST_TIMEIN' int(30) NOT NULL,
'SERVER_ADDROUT' varchar(40) NOT NULL,
'REMOTE_ADDROUT' varchar(40) NOT NULL,
'REQUEST_TIMEOUT' int(30) NOT NULL,
PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Когда сотрудник впервые за тот же день войдет в систему, у него будет опция Punch In для перфорации в течение дня. Затем поле punchin должно быть заполнено текущей меткой времени, а поле punchout должно быть только нулевым. Значение для перфорации должно быть вставлено только при нажатии на ссылку Punch Out.

Но теперь, когда я пытаюсь вставить значение только в punchin, встают как punchin, так и punchout.

Может ли кто-нибудь помочь мне решить эту проблему?

спросил(а) 2021-01-19T13:41:59+03:00 6 месяцев, 2 недели назад
1
Решение
91

Если вы выберете тип поля как метку времени, текущее время будет добавлено в поле. Таким образом, в вашем случае оба Punchin & Punchout будут заполняться с одинаковым значением. Так измените тип для перфорации, как указано @jaczes

ответил(а) 2021-01-19T13:41:59+03:00 6 месяцев, 2 недели назад
45

Попробуйте вот так:


'punchin' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
'punchout' datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

ответил(а) 2021-01-19T13:41:59+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема