gpt4 book ai didi

mysql - 如何在mysql中使用两个日期输入参数之间的运算符?

转载 作者:行者123 更新时间:2023-11-30 00:01:48 24 4
gpt4 key购买 nike

我的任务是获取 2fromdate 和 todate 之间的记录(作为输入参数给出)。 我无法在 2 个输入参数之间使用运算符...

我的查询如下...

DELIMITER $$

CREATE DEFINER=`testrunner`@`%` PROCEDURE `usp_GetAllTranasactions`(pFromDate nvarchar(30),pToDate nvarchar(30),pstatus int)

BEGIN

select

ST.UserID,U.Username,

ST.SubscriptionID,

ST.DateOfSubscription,

SM.SubType,

SM.Details,

ST.Amount,

ST.EndDate,


ST.Status

from tr_t_subscriptiontransactions ST

Join tr_m_users U on U.UserID=ST.UserID

join tr_m_subscription SM on SM.SubscriptionID=ST.SubscriptionID

where **ST.DateOfSubscription between (pFromDate and pToDate) and ST.EndDate
between(pFromDate and pToDate) and ST.Status=pstatus;**

END if;

END

这里我不知道如何在参数之间使用..请帮助我..我想检索 fromdate 和 todate 之间的记录..希望你理解..

最佳答案

假设您想要 2014 年 6 月的所有交易

在您的用户界面中,参数值为:

  • from_date = 2014-06-01
  • 截止日期 = 2014-06-30

但您将根据交易日期和时间进行评估。您如何确保 6 月 30 日(直至午夜)的每笔交易都包含在结果中?

方法如下:使用 2014-07-01 而不是 2014-06-30,查询如下 - 不使用 Between!

SELECT
ST.UserID
, U.Username
, ST.SubscriptionID
, ST.DateOfSubscription
, SM.SubType
, SM.Details
, ST.Amount
, ST.EndDate
, ST.Status
FROM tr_t_subscriptiontransactions ST
JOIN tr_m_users U
ON U.UserID = ST.UserID
JOIN tr_m_subscription SM
ON SM.SubscriptionID = ST.SubscriptionID
WHERE (ST.DateOfSubscription >= pFromDate AND ST.DateOfSubscription < pToDate + 1)
AND (ST.EndDate >= pFromDate AND ST.EndDate < pToDate + 1)
AND ST.Status = pstatus
;

避免日期范围的 Between ,因为它包括下边界值和上边界值。

... equivalent to the expression (min <= expr AND expr <= max)

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between

这可能导致“反模式”,如下所示:

  • 其中 dt_field 位于“2014-06-01 00:00:00”和“2014-06-30 23:59:59”之间

但是有些时间单位小于一秒,所以这种方法并不完美。不要试图通过这种方式调整上限值来克服 Between 的缺陷。简单且更准确的方法是使用 >= 和 < 将上限值调整一个完整的时间单位(通常是第二天)。

关于mysql - 如何在mysql中使用两个日期输入参数之间的运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24968147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com