MongoDB如何将字符串类型日期转换为Date类型后执行过滤查询

Java 场景
- JDK8及以上版本推荐使用
java.time包下的DateTimeFormatter和LocalDate/LocalDateTime完成转换,避免旧版SimpleDateFormat的线程安全问题 - 示例代码:
import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class DateConvert { public static void main(String[] args) { // 匹配你的字符串日期格式 String datePattern = "yyyy-MM-dd"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern(datePattern); // 待转换的字符串字段值 String strDate = "2024-10-01"; LocalDate date = LocalDate.parse(strDate, formatter); // 过滤判断:是否大于当前日期 boolean isGreaterThanNow = date.isAfter(LocalDate.now()); } }
- 若使用JDK8以下版本,可使用
SimpleDateFormat完成转换:
import java.text.SimpleDateFormat; import java.util.Date; public class DateConvert { public static void main(String[] args) throws Exception { String datePattern = "yyyy-MM-dd"; SimpleDateFormat sdf = new SimpleDateFormat(datePattern); String strDate = "2024-10-01"; Date date = sdf.parse(strDate); // 过滤判断:是否大于当前日期 boolean isGreaterThanNow = date.after(new Date()); } }
JavaScript 场景
- 标准格式的日期字符串可直接传入
Date构造函数转换,非标准格式建议先做格式适配避免浏览器解析差异 - 示例代码:
const strDate = '2024-10-01' const date = new Date(strDate) // 过滤判断:是否大于当前日期 const isGreaterThanNow = date > new Date()
Python 场景
- 使用
datetime模块的strptime方法指定格式完成转换 - 示例代码:
from datetime import datetime date_pattern = "%Y-%m-%d" str_date = "2024-10-01" date = datetime.strptime(str_date, date_pattern) # 过滤判断:是否大于当前日期 is_greater_than_now = date > datetime.now()
SQL 数据库查询场景
直接在查询语句中调用数据库自带的日期转换函数完成转换后过滤,不同数据库的对应函数如下:
- MySQL:使用
STR_TO_DATE函数
SELECT * FROM 你的表名 WHERE STR_TO_DATE(你的date字段名, '%Y-%m-%d') > NOW();
- PostgreSQL:使用
TO_DATE函数
SELECT * FROM 你的表名 WHERE TO_DATE(你的date字段名, 'YYYY-MM-DD') > CURRENT_DATE;
- Oracle:使用
TO_DATE函数
SELECT * FROM 你的表名 WHERE TO_DATE(你的date字段名, 'YYYY-MM-DD') > SYSDATE;
注意:所有场景下都需要保证你指定的日期解析格式和字符串的实际格式完全匹配,否则会出现解析错误或者得到错误的日期值。如果存在格式不规范的脏数据,建议先做格式校验再执行转换操作。
内容的提问来源于stack exchange,提问作者SarahAlexa
相关产品推荐
相关产品推荐

