SQL 、MySql 查询前几年、几天、几小时的数据

SQL语句查询最近几年和几月的数据

select DateAdd(Month,-3,getdate()) –返回一个时间,根据这个时间点去查询想要的数据即可

–DateAdd函数的详细说明:

–DateAdd(interval, number, date)

–interval 必选。字符串表达式,表示要添加的时间间隔。

–yyyy 年

–q 季度

–m 月

–y 一年的日数

–d 日

–w 一周的日数

–ww 周

–h 小时

–n 分钟

–s 秒

–number 必选,数值表达式。

–表示要添加的时间间隔的个数。数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期)。

–date 必选。标识查询时的对比时间,getdate()在SQL中说明是现在的时间 。

–例子:

Select DateAdd(Month,-3,getdate()) –以当前时间为准,返回三个月之前的一个时间点

Select DateAdd(yyyy,-3,getdate()) –以当前时间为准,返回三年之前的一个时间点

Select DateAdd(Month,3,getdate()) –以当前时间为准,返回三个月之后的一个时间点

MySql:
mysql 昨天 一周前 一月前 一年前的数据 这里主要用到了DATE_SUB,

参考如下

复制代码 代码如下:

SELECT * FROM yh_content
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 DAY)
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 WEEK)
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 YEAR)
注意:如果数据库中时间以UNIX时间戳的形式存放的话,在时间对比上需要更改为统一格式:

DATE_SUB()返回的是格式化后的时间:2014-05-17

需要用UNIX_TIMESTAMP()转化为UNIX时间戳形式对比:

复制代码 代码如下:

where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY))
where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))
where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 YEAR))
详细请查看MySql时间函数:DATE_SUB、DATE_ADD、UNIX_TIMESTAMP等函数的用法

### 如何使用 SQL 查询指定日期的数据SQL 中,可以通过多种方式查询特定日期的数据。以下是几种常见的实现方法: #### 方法一:直接匹配固定日期 如果需要查询某列等于某个具体日期的所有记录,可以直接通过 `&#39;YYYY-MM-DD&#39;` 的字符串形式表示该日期并进行比较。 ```sql SELECT * FROM table_name WHERE date_column = &#39;2023-10-05&#39;; ``` 这种方法适用于精确到日的情况[^1]。 --- #### 方法二:范围内的日期筛选 当目标是查找某一时间段内的数据时,可以利用大于 (`>`) 或小于 (`<`) 运算符定义起始和终止条件。 例如,要检索 2023 年 9 月 1 日至 2023 年 9 月 30 日之间的所有条目,则可写成如下语句: ```sql SELECT * FROM table_name WHERE date_column >= &#39;2023-09-01&#39; AND date_column <= &#39;2023-09-30&#39;; ``` 此语法同样支持不包含边界值的情形,只需调整操作符即可。 --- #### 方法三:基于当时间动态生成日期条件 对于希望依据系统实时时刻执行过滤的需求,能够调用内置的时间戳函数 `GETDATE()` 来达成目的。 比如只提取当天的资料项: ```sql SELECT * FROM table_name WHERE CAST(date_column AS DATE) = CAST(GETDATE() AS DATE); ``` 这里采用了强制转换为纯日期类型的技巧以忽略可能存在的小时/分钟部分差异[^3]。 另外还有针对最近 N 天内发生的事件统计需求的例子: 假设想了解过去七日内新增了多少订单数量,那么对应的脚本可能是这样的样子: ```sql SELECT COUNT(*) as order_count_last_7_days FROM orders WHERE order_date >= DATEADD(DAY, -7, GETDATE()); ``` 上述例子中的 `DATEADD` 函数用于向现有的 DATETIME 值上加减一定单位的数量;在这里我们让它回溯一个星期长度[^2]。 --- #### 方法四:高级日期处理逻辑 更复杂的场景下还可以借助其他专用工具集完成任务。像 MySQL 提供了一个名为 `TIMESTAMPDIFF` 的功能可以帮助评估两段时期之间确切间隔量级(秒、分、小时乃至整年级别均可)。下面展示了一种应用场景——找出距离现在正好三个月之的那一天所对应的所有交易详情列表: ```sql SELECT * FROM transactions WHERE transaction_date = DATE_SUB(CURDATE(), INTERVAL 3 MONTH); ``` 而另一个版本则是寻找那些发生在任意给定参照点之若干工作周期之外的位置集合。 --- ### 总结 以上介绍了四种主要途径来满足不同层次上的关于定位特殊时间节点关联的信息请求。每一种都有其独特优势以及适用场合,在实际开发过程中应视具体情况灵活选用最合适的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值