欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql 獲取農歷年份

錢斌斌2年前10瀏覽0評論

MySQL獲取農歷年份的方法

介紹

農歷歷法是中國傳統歷法,是以月相周期為基礎的一種日歷,很多中國節日和活動都是按照農歷日期來確定的。

問題

在開發中,有時候需要根據公歷日期獲取農歷日期,但是 MySQL 并不支持農歷計算。

解決辦法

可以借助于第三方的計算庫或者需要一些復雜的算法,不過現在有一個比較簡單的解決辦法:使用 PHP 的 DateTime 類來將公歷日期轉換成農歷日期,然后將結果保存到 MySQL 中。

示例

下面是一個示例 SQL 腳本:

CREATE TABLE IF NOT EXISTS `holidays` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`holiday_name` varchar(50) NOT NULL COMMENT '節日名稱',
`holiday_date` date NOT NULL COMMENT '公歷節日日期',
`lunar_year` varchar(10) DEFAULT NULL COMMENT '農歷年份',
`lunar_date` varchar(10) NOT NULL DEFAULT '' COMMENT '農歷節日日期',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DELIMITER ;;
CREATE TRIGGER `holiday_trigger` BEFORE INSERT ON `holidays`
FOR EACH ROW
BEGIN
SET NEW.lunar_year = YEAR(STR_TO_DATE(CONCAT(YEAR(NEW.holiday_date), '-', MONTH(NEW.holiday_date), '-', DAY(NEW.holiday_date)), '%Y-%m-%d'));
SET NEW.lunar_date = DATE_FORMAT(STR_TO_DATE(CONCAT(YEAR(NEW.holiday_date), '-', MONTH(NEW.holiday_date), '-', DAY(NEW.holiday_date)), '%Y-%m-%d'), '%m%d');
END;;
DELIMITER ;
INSERT INTO `holidays` (`holiday_name`, `holiday_date`) VALUES
('元旦', '2022-01-01'), 
('春節', '2022-02-01');

這個腳本首先創建了一個 holidays 表來存放節日信息,然后在表中定義了兩個字段: lunar_year 和 lunar_date 。其中 lunar_year 字段用來存放農歷年份,lunar_date 字段用來存放農歷日期。

之后定義了一個 BEFORE INSERT 的觸發器,當插入新的記錄時,將公歷日期轉換成農歷日期,并將結果存儲到 lunar_year 和 lunar_date 字段中。

最后插入了兩條記錄,其中元旦是公歷節日,春節是農歷節日。