Presto SQL字符串日期转yyyy/mm/dd无函数转换方法咨询
对应解决方法
Presto 环境实现
你提到ds本身就是以yyyy/mm/dd格式存储的文本字段,且要求不使用日期函数,可直接按字符串规则处理:
- 若你调整表结构将ds改为VARCHAR类型存储
yyyy/mm/dd格式的文本,yyyy/mm/dd格式的字符串大小比较逻辑和日期大小比较逻辑完全一致,可直接做范围过滤,不需要转日期类型,查询示例如下:
select ds, count(job_id) as jobs_per_day, sum(time_spent)/3600 as hours_spent from job_data where ds >='2020/11/01' and ds <='2020/11/30' group by ds ;
MySQL Workbench 8.0 环境实现
MySQL支持标准格式字符串到DATE类型的隐式转换,不需要调用任何日期函数即可直接使用:
- 插入数据时直接传入
'2020/11/30'格式的字符串,MySQL会自动转换为DATE类型存储 - 查询时直接用
'2020/11/01'格式的字符串和DATE类型的ds字段做比较即可,不需要额外转换,查询示例如下:
select ds, count(job_id) as jobs_per_day, sum(time_spent)/3600 as hours_spent from job_data where ds >='2020/11/01' and ds <='2020/11/30' group by ds ;
如果需要查询结果里的DATE类型ds展示为yyyy/mm/dd格式,不需要写SQL函数,直接在Workbench里调整展示配置即可:依次点击菜单栏Edit -> Preferences -> SQL Editor -> SQL Execution,将Date format设置为%Y/%m/%d,重启Workbench后生效。
内容的提问来源于stack exchange,提问作者Chaudhari
相关产品推荐
相关产品推荐

