SQL Date + -

本文介绍了在Oracle数据库中如何使用SQL语句进行日期的加减运算,包括按年、月、日、小时、分钟及秒等不同单位进行操作的方法,并展示了如何将计算结果格式化为指定日期格式。

加法

select sysdate,add_months(sysdate,12) from dual;        --加1年
 select sysdate,add_months(sysdate,1) from dual;        --加1月
 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual;   --加1星期
 select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual;   --加1天
 select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual;  --加1小时
 select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --加1分钟
 select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --加1秒

减法
 select sysdate,add_months(sysdate,-12) from dual;        --减1年
 select sysdate,add_months(sysdate,-1) from dual;        --减1月
 select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual;   --减1星期
 select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual;   --减1天
 select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual;  --减1小时
 select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --减1分钟
 select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --减1秒

<think> 我们被要求编写一个SQL查询,从Activities表中找出每个日期(sell_date)销售的不同产品(product)的数量,以及这些产品的名称列表(按产品名称的字典序排列)。结果表需要按照sell_date排序。 根据引用[1][2][3]中的示例,我们可以使用以下步骤: 1. 按sell_date分组(GROUP BY sell_date) 2. 对每个分组,计算不同产品的数量:使用COUNT(DISTINCT product) as num_sold 3. 对每个分组,将不同产品按字典序(升序)排列,并用逗号连接:使用GROUP_CONCAT(DISTINCT product ORDER BY product SEPARATOR ',') as products 4. 最后,按sell_date排序(ORDER BY sell_date) 注意:引用中有的写法没有指定分隔符,但默认是逗号。为了清晰,我们可以指定分隔符为逗号。 因此,完整的SQL语句如下: </think>### 思路分析:编写日期分组销售统计的SQL查询 根据需求,我们需要实现以下目标: 1. **按日期分组**:使用 `GROUP BY sell_date` 对销售记录分组 2. **统计不同产品数量**:通过 `COUNT(DISTINCT product)` 计算每日唯一产品数量 3. **聚合产品名称**:使用 `GROUP_CONCAT()` 组合产品名称,并添加排序和分隔符 4. **结果排序**:按 `sell_date` 升序排列最终结果 ### 完整SQL解决方案 ```sql SELECT sell_date, COUNT(DISTINCT product) AS num_sold, GROUP_CONCAT(DISTINCT product ORDER BY product SEPARATOR ',') AS products FROM Activities GROUP BY sell_date ORDER BY sell_date; ``` ### 关键组件解析: 1. **分组统计** `GROUP BY sell_date` 将相同日期的销售记录归为一组,作为计算基础[^1]。 2. **产品数量统计** `COUNT(DISTINCT product) AS num_sold` 计算每日销售的唯一产品数量: - `DISTINCT` 确保重复产品只计一次 - 结果命名为 `num_sold`[^2] 3. **产品名称聚合** `GROUP_CONCAT(DISTINCT product ORDER BY product SEPARATOR ',')` 实现: - `DISTINCT` 去重 - `ORDER BY product` 按字典序排序 - `SEPARATOR ','` 用逗号连接产品名称 - 结果命名为 `products`[^3] 4. **结果排序** `ORDER BY sell_date` 确保输出按日期升序排列[^4]。 ### 输出示例: | sell_date | num_sold | products | |------------|----------|-------------------| | 2020-05-30 | 3 | Basketball,Headset,T-shirt | | 2020-06-01 | 2 | Bible,Pencil | | 2020-06-02 | 1 | Mask |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值