Проверьте, существует ли между датами и временем в SQL SERVER - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть эти данные

ID    empID    FromDate    ToDate      FromTime    ToTime
1     00001    09/11/2018  09/11/2018  10:00 AM    11:00 AM
2     00001    09/11/2018  09/11/2018  08:00 AM    09:00 AM
3     00001    09/11/2018  09/11/2018  07:00 AM    08:00 AM

Код:

SELECT      ID,EmpID
FROM        TableName
WHERE       ((WorkFromDate between @WorkFromDate and @WorkToDate) and (WorkToDate between @WorkFromDate and @WorkToDate))
            AND ((WorkFromTime between @WorkFromTime and @WorkToTime) and (WorkToTime between @WorkFromTime and @WorkToTime))
            AND EmpID = '00001'

Ajax:

success: function (data) {

                            if (data == '') {
                                // saved;
                            }
                            else {
                                swal({
                                    title: "Warning !",
                                    text: "Already Filed.",
                                    imageUrl: "../assets/plugins/bootstrap-sweetalert/thumbs-up.jpg"
                                });
                            }
                        },

Дата вставки

EmpID = 00001
FromDate = 09/11/2018
ToDate = 09/11/2018
FromTime = 07:30 AM
ToTime = 08:30 AM

Я хочу, чтобы эти данные были проигнорированы, потому что эти данные уже были сохранены между ID 2 и 3.

Спасибо

1 Ответ

0 голосов
/ 26 сентября 2018

Ваш вопрос неясен, но если я правильно понял, это то, что вы хотите.

Преобразуйте введенные дату и время в DATETIME и сделайте то же самое для тех, что вТаблица.Затем вы можете использовать BETWEEN, чтобы посмотреть, попадают ли переменные в период, уже указанный в таблице

SELECT      ID,EmpID
FROM        TableName
WHERE       (CONVERT(DATETIME, CONCAT(@WorkFromDate, ' ', @WorkFromTime)) BETWEEN CONVERT(DATETIME, CONCAT(WorkFromDate, ' ', WorkFromTime)) AND CONVERT(DATETIME, CONCAT(WorkToDate, ' ', WorkToTime))
            OR CONVERT(DATETIME, CONCAT(@WorkToDate, ' ', @WorkToTime)) BETWEEN CONVERT(DATETIME, CONCAT(WorkFromDate, ' ', WorkFromTime)) AND CONVERT(DATETIME, CONCAT(WorkToDate, ' ', WorkToTime)))
            AND EmpID = '00001'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...