我正在编写一个统计应用程序,我需要查询数据库以了解客户的每月收入,因此我需要查看该月每个订阅的天数。问题是我需要告诉他上个月的开始和结束,但由于时钟差异,我无法发送系统时间。它必须是它自己的。我无法使用 Mysql 中的变量,因为它将受到多个查询的影响,并且据我所知,它们可能会被覆盖并导致错误。
SELECT GREATEST ( LEAST ( x.period_end, y.period_end) - GREATEST ( x.period_start, y.period_start), 0 )
from customer_invoice x, (SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 MONTH), '%Y-%m-01') AS period_start,
LAST_DAY(DATE_ADD(NOW(), INTERVAL -1 MONTH)) AS period_end) y;
我需要知道是否有任何方法可以显式告诉Mysql计算'y'一次并使用它。或者我是否可以告诉他使用与单个 Mysql 请求相对应的变量。
我正在使用 Mysql 的包装器,它重写了 Node.js 的标准包装器,据我所知,如果一个查询定义了一个变量并正在执行,而另一个查询出现并尝试定义一个与其覆盖的同名变量第一个破坏了第一个查询。我可以为每个变量使用自定义哈希名称,但我不想这样做。
最佳答案
做一次:
SELECT @foo := this + that,
@bar := other * stuff;
根据需要经常使用这些@变量:
SELECT ... @foo ... @bar .. @foo
它们将在 session 结束时丢失(当您断开连接时)。
附录
@variables
是 session 本地的(即连接本地的)。因此每个连接可以使用不同的值。
关于mysql - 在 Mysql 中缓存月末和月初。 Node.js 中的 Mysql 变量重新定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32205199/