如何在sql中使用BETWEEN选择数据库中的记录?

发布于 2025-01-18 03:59:47 字数 1405 浏览 4 评论 0原文

如何在数据库中选择使用SQL中的记录?我想要的是在Startdate和Enddate中选择记录。如果记录存在于StartDate的范围内并终结范围内,则将返回true,如果不是,则将返回false

// false //

formData = {
    "startDate": "14/04/2022 09:41 PM",
    "duration": 3600000,
    "assignedTo": "441017201|441017210",
}

var hasExistingEvent = (assignedTo, startDate, end) => {
    var assigne = assignedTo.split("|")
    var userFilters = assigne.map((user) => {
        return `Assigned_To_Ids LIKE '%${user}%'`;
    }).join(" OR ");
    return  new Promise((resolve, reject) => {
        .....,("SELECT Assigned_To_Ids, startDate FROM Event WHERE ("+ userFilters +") AND (startDate BETWEEN '" + moment(startDate).format() + "' AND '"+ moment(end).format() + "')", 100, function(data){
            return resolve(data.length ==0)
        })
    })
}

var validatedUserExistsEvent = async(formData) => {
    var {  assignedTo, startDate, duration } = formData
    var dd_startDate = moment(startDate, 'DD/MM/YYYY HH:m A').toDate()
    var end = new Date(dd_startDate);
        end = new Date(end.setTime(end.getTime() + duration));
    var hasExisting = await _data.hasExistingEvent(assignedTo, dd_startDate, end);
    return hasExisting;
}

从数据库

记录。 png“ rel =” nofollow noreferrer“> ”

How to select record in the database using BETWEEN in sql? what I want here is to select record within the startDate and endDate. if the record is exists within the range of startDate and endDate it will return true and if not it will return false

//form

formData = {
    "startDate": "14/04/2022 09:41 PM",
    "duration": 3600000,
    "assignedTo": "441017201|441017210",
}

// current code

var hasExistingEvent = (assignedTo, startDate, end) => {
    var assigne = assignedTo.split("|")
    var userFilters = assigne.map((user) => {
        return `Assigned_To_Ids LIKE '%${user}%'`;
    }).join(" OR ");
    return  new Promise((resolve, reject) => {
        .....,("SELECT Assigned_To_Ids, startDate FROM Event WHERE ("+ userFilters +") AND (startDate BETWEEN '" + moment(startDate).format() + "' AND '"+ moment(end).format() + "')", 100, function(data){
            return resolve(data.length ==0)
        })
    })
}

var validatedUserExistsEvent = async(formData) => {
    var {  assignedTo, startDate, duration } = formData
    var dd_startDate = moment(startDate, 'DD/MM/YYYY HH:m A').toDate()
    var end = new Date(dd_startDate);
        end = new Date(end.setTime(end.getTime() + duration));
    var hasExisting = await _data.hasExistingEvent(assignedTo, dd_startDate, end);
    return hasExisting;
}

record from database

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

凉世弥音 2025-01-25 03:59:47

从表名中选择列名,其中列名位于开始日期和结束日期之间;

所以基本上:
您可以从表中选择所需的列名称。其中包含日期的列位于开始日期和结束日期之间。

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN startDate AND endDate;

So basically:
You select the column names that you want from the table. Where the column that contains your date is between startDate and endDate.

我爱人 2025-01-25 03:59:47

您可以为此操作创建SP或使用SQL命令

select case when exists (select * from Ls2 where date between @startdate and @EndDate) then 1 else 0 end

you can create sp for this operation or use sql command like this

select case when exists (select * from Ls2 where date between @startdate and @EndDate) then 1 else 0 end
丢了幸福的猪 2025-01-25 03:59:47

例如,以下查询获取数据在2022年3月1日至3月30日之间使用之间。

从table_name中选择 *'2022-03-01 00:00:00'和'2022-03-31 23:59:59'之间的startdate之间的column_name;

如果您的表具有满足此条件的数据,则数组中会有一些行,否则将是空的。

因此,基于此,您可以将变量设置为True和False。

For Example, Below query fetch data between March 1 to March 30 2022 using Between.

SELECT * FROM table_name WHERE column_name BETWEEN startDate BETWEEN '2022-03-01 00:00:00' AND '2022-03-31 23:59:59';

If your table has data satisfying this condition, there will be some rows in array otherwise it will be empty.

So based on that, you can set your variable as true and false.

一抹微笑 2025-01-25 03:59:47

方法一:
如果你想根据 SQL 条件得到 true 或 false 结果,那么你可以使用 SELECT CASE of sql

SELECT
  CASE WHEN EXISTS 
  (
        SELECT Assigned_To_Ids 
        FROM events 
        WHERE startDate BETWEEN someStartDate and someEndDate 
  )
  THEN 'TRUE'
  ELSE 'FALSE'

END

这里 someStartDate, someEndDate 是你可以相应替换的变量。

方法 2:

您可以编写 sql 查询来返回 0 或正值,具体取决于记录是否存在,然后使用简单的检查功能,您可以将值返回 true 或 false。在这种情况下,sql 查询将是

SELECT count(Assigned_To_Ids) 
FROM events 
WHERE startDate BETWEEN someStartDate and someEndDate

METHOD 1:
In case if you want to get result as true or false on the basis of SQL condition, then you can use SELECT CASE of sql

SELECT
  CASE WHEN EXISTS 
  (
        SELECT Assigned_To_Ids 
        FROM events 
        WHERE startDate BETWEEN someStartDate and someEndDate 
  )
  THEN 'TRUE'
  ELSE 'FALSE'

END

here someStartDate, someEndDate are variables which you can replace accordingly.

METHOD 2:

You can write sql query to return 0 or positive value depending on whether records are present or not afterwards with simple check in function you can return the value as true or false. In that case sql query will be

SELECT count(Assigned_To_Ids) 
FROM events 
WHERE startDate BETWEEN someStartDate and someEndDate
我最亲爱的 2025-01-25 03:59:47

选择存在的情况

从事件中选择 COLUMN_NAME,其中开始日期位于 @startDate 和 @enddate 之间

然后是“真”,否则是“假”

SELECT CASE WHEN EXISTS
(
SELECT COLUMN_NAME FROM events WHERE startDate BETWEEN @startDate and @enddate
)
THEN 'TRUE' ELSE 'FALSE'

泪是无色的血 2025-01-25 03:59:47

不太确定发生了什么,但我猜你正在寻找这个:

`SELECT Assigned_To_Ids, startDate 
FROM Event
WHERE ${userFilters} 
AND (
  startDate < ${moment(startDate).format()}
  AND startDate > ${moment(end).format()}
)`

Not exactly sure what's going on, but I'm guessing you are looking for this:

`SELECT Assigned_To_Ids, startDate 
FROM Event
WHERE ${userFilters} 
AND (
  startDate < ${moment(startDate).format()}
  AND startDate > ${moment(end).format()}
)`
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文