在SQL中,INTERVAL
可以用作函数和关键字,具有不同的用途和语法。
作为函数
当INTERVAL
用作函数时,它主要用于比较操作。例如,INTERVAL(66,10,11,12,13,14,51,86)
会将第一个数66与后面的数依次进行比较,返回小于等于66的个数,结果是6。需要注意的是,只有将后面的数字从小到大排列,INTERVAL
函数才能正常使用
【因为interval在找到第一个比他大的数之后,就会停止统计,直接返回结果】。
作为关键字
当INTERVAL
用作关键字时,它表示时间间隔,常用于DATE_ADD()
和DATE_SUB()
函数中,用于时间的加减法。例如:
SELECT DATE_ADD('2020-07-20', INTERVAL +1 DAY); 将返回2020-07-21。
SELECT DATE_ADD('2020-07-20', INTERVAL +1 HOUR); 将返回2020-07-20 01:00:00。
语法和示例
在SQL中,INTERVAL
函数可以用于添加或减去特定的时间间隔。其基本语法如下
SELECT field1, field2, ... FROM table_name WHERE condition INTERVAL value unit
其中,value
表示要添加或减去的时间值,unit
表示时间单位(如YEAR、MONTH、DAY、HOUR、MINUTE、SECOND等)。例如,要查询比当前日期早3个月的记录,可以使用以下语句:
SELECT * FROM orders WHERE order_date < NOW() - INTERVAL 3 MONTH
这将返回订单日期在当前日期之前3个月的所有记录。
SELECT count(1) FROM sales_order WHERE NOW() - INTERVAL 2 month <create_time and create_time < NOW() - INTERVAL 1 month ;
这将返回 距今2月到距今1月的订单量
不同数据库系统的支持情况
不同的数据库系统对INTERVAL
函数的支持程度有所不同。例如,MySQL、PostgreSQL等数据库系统都支持INTERVAL
用于日期和时间的加减操作,但在具体实现和语法上可能有所不同。因此,在使用时建议查看具体数据库的文档。
===============================================
COALESCE函数在MySQL中用于返回参数列表中的第一个非NULL值。如果所有参数都是NULL,则返回NULL。
SELECT COALESCE(NULL, 5, 10); -- 结果为5
SELECT COALESCE(NULL, NULL, 'Hello'); -- 结果为'Hello'
SELECT COALESCE(NULL, NULL, NULL); -- 结果为NULL
COALESCE函数可以和别的函数一起使用
SELECT COALESCE(SUBSTRING(column1, 1, 3), '默认值') FROM table_name; -- 如果截取结果为空字符串,则返回'默认值'
也可以用于数量的累加
SELECT id, name, COALESCE(math_score, 0) + COALESCE(english_score, 0) + COALESCE(history_score, 0) AS total_score FROM student_scores;