mysql - 在 SQL 条件下检查两个日期是否在同一会计年度?

标签 mysql sql triggers

在为同一财政年度创建限制修改数据的触发器限制时,我需要检查 2 个日期(NEW.starting_date 和 OLD.starting_date)是否在我的条件部分下的同一财政年度。

我的 table 是这样的。

pid  (int)    |    data (varchar)      |   starting_date (date)

1             |          abc           |  2017-09-08
2             |          def           |  2017-03-13
3             |          ghi           |  2017-07-12

条件

NEW.data<>OLD.data
  AND (
      (YEAR(NEW.starting_date) = YEAR(OLD.starting_date) 
AND MONTH(NEW.starting_date)<=4 AND MONTH(OLD.starting_date) <=4
AND MONTH(NEW.starting_date)>=3 AND MONTH(OLD.starting_date) >=3)

OR 

(ABS(YEAR(NEW.starting_date)-YEAR(OLD.starting_date)) = 1
AND MONTH(NEW.starting_date)<=3 AND MONTH(OLD.starting_date) >=4
AND MONTH(NEW.starting_date)>=4 AND MONTH(OLD.starting_date) <=3)
)

                                                                                              )

NOTE: The financial year starts on April 1st each year.

问题:

  1. 此条件未按预期工作。可能是什么问题?
  2. 有没有其他有效的方法来做到这一点。

数据库服务器

Server: 127.0.0.1 via TCP/IP
Server type: MariaDB
Server version: 10.1.25-MariaDB - mariadb.org binary distribution
Protocol version: 10
User: root@localhost
Server charset: UTF-8 Unicode (utf8)

网络服务器

Apache/2.4.26 (Win32) OpenSSL/1.0.2l PHP/5.6.31
Database client version: libmysql - mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $

最佳答案

我现在无法使用过滤器进行测试,但这里是两个日期的财政年度之间的快速比较:

SET @start_date = '2016-03-11';
SET @end_date = '2016-04-11';
SELECT IF(
(SELECT IF(MONTH(@start_date)>=4, YEAR(@start_date), YEAR(@start_date)-1))
=
(SELECT IF(MONTH(@end_date)>=4, YEAR(@end_date), YEAR(@end_date)-1))
, 'Same fiscal year', 'Different fiscal year');

关于mysql - 在 SQL 条件下检查两个日期是否在同一会计年度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46977408/

相关文章:

php - 不同产品税率的税收计算 php sql

mysql - sql创建表,条件是2列不能具有相同的值

java - 使用触发器删除 Oracle 表中的行

mysql - 如果 INSERT 上未设置字段,则触发器会表现得很奇怪

postgresql - 检查值是否不等于选择查询时触发函数总是引发异常

c# - C# 中带有字典的 InvalidCastException

mysql - 在mac上安装mysql2时出现"Failed to build gem native extension"错误

mysql - 如何使用 group by order by 连接两个表

php - 显示图像 Blob ,可能编码错误

sql - 异步回调 - gwt