MySQL 日期查询

本文详细介绍在MySQL中如何处理存储为VARCHAR类型的日期数据,包括使用STR_TO_DATE和DATE_FORMAT函数进行转换,以及如何查询特定时间段、本月、上月、今日、昨日、本年和本周的数据。

在mysql使用过程中,日期一般都是以datetime、timestamp等格式进行存储的,但有时会因为特殊的需求或历史原因,日期的存储格式是varchar,那么我们该如何处理这个varchar格式的日期数据呢

使用函数STR_TO_DATA(str,format)

时间字段为Greens_Data 类型为 varchar

查询指定一段时间中的数据并排序

1、第一种

函数STR_TO_DATE(str,format):将字符串转为时间格式

SELECT Greens_ID,Greens_Date FROM greens
WHERE STR_TO_DATE(Greens_Date,'%Y-%m-%d') BETWEEN '2019-08-01' AND '2019-10-01'
ORDER BY Greens_Date DESC

2、第二种

SELECT Greens_ID,Greens_Date FROM greens
WHERE STR_TO_DATE('开始时间','%Y-%m-%d') AND STR_TO_DATE('结束时间','%Y-%m-%d')
ORDER BY STR_TO_DATE('时间字段名','%Y-%m-%d') DESC

函数DATE_FORMAT(str,format):将时间格式转为字符串

函数NOW():返回格式为yyyy-mm-dd HH:MM:ss

函数CURDATE():返回格式为yyyy-mm-dd

查询本月

SELECT * FROM greens WHERE DATE_FORMAT( Greens_Date, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

查询上一月数据:

SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1

查询今日数据:

select * from 表名 where to_days(时间字段名) = to_days(now());

查询昨日数据:

SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1

查询本年数据:

select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW());

查询本周数据:

SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());

查询上周数据:

SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;

 

### 回答1: 在 MySQL 中,你可以使用 DATE_SUB 函数来减去日期中的天数。以下是一个示例查询,将日期字段减去一天: ``` SELECT DATE_SUB(date_column, INTERVAL 1 DAY) FROM your_table; ``` 在上面的查询中,将 `date_column` 替换为你要减去一天的日期字段名称,`your_table` 替换为你的表名称。该查询返回一个新的日期,该日期减去了一天。 ### 回答2: 在MySQL中,可以使用DATE_SUB函数来减少日期。DATE_SUB函数可以用于从指定日期日期时间值中减去一个时间间隔。下面是一个示例: 假设我们有一个名为'orders'的表,其中包含一个日期列'order_date',我们想要查询昨天的订单。 SQL查询可以如下所示: SELECT * FROM orders WHERE order_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY); 在这个查询中,我们使用了CURDATE函数来获取当前日期,然后使用DATE_SUB函数从当前日期中减去1天。然后,我们将这个减去1天的日期与'order_date'列进行比较,以获取昨天的订单。 值得注意的是,日期和时间在MySQL中都以标准的YYYY-MM-DD HH:MM:SS格式存储。通过使用DATE_SUB函数,我们可以在查询中很容易地对日期进行加减操作,以满足我们的需求。 ### 回答3: 要在MySQL中对日期进行减少一天的查询,可以使用日期函数DATE_SUB()。 DATE_SUB()函数用于从指定的日期中减去一定的时间间隔。 示例: 假设有一个名为orders的表,其中有一个列名为order_date存储订单日期。 要查询日期减少一天后的结果,可以使用以下的SQL语句: SELECT DATE_SUB(order_date, INTERVAL 1 DAY) FROM orders; 这个查询返回order_date列中日期减少一天的结果。 也可以使用DATE_SUB()函数结合UPDATE语句,来更新表中的日期数据,并将日期减少一天: UPDATE orders SET order_date = DATE_SUB(order_date, INTERVAL 1 DAY); 注意,这个更新语句会修改表中所有的日期数据,使其减少一天。 总结: 要在MySQL中进行日期减少一天的查询,可以使用DATE_SUB()函数,并指定要减去的时间间隔。此外,还可以使用UPDATE语句和DATE_SUB()函数来更新表中的日期数据
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值