mysql如何查某年某月至某年某月的数据,没有日

mysql如何查某年某月至某年某月的数据,没有日,第1张

例子:

where year(COL)100 + month(COL) between 201812 and 201903

懂了就不看下面的废话:year100+month把日期类型的COL字段转换为yyyymm的6位整数,然后使用BETWEEN来筛选。

这样的方法好写,但是效率不高,无法使用索引。如果要使用日期字段的索引,必须在客户端计算出起止日期,然后再BETWEEN两个日期之间,开始日期就是yyyymm01、结束日期是yyyy(mm+1)01-1

timestamp这种类型就是包含日期和时间的而且根据时区来显示的,将这列的类型设置为date时你看看这一列有没有允许空值,date是有效的数据类型报错的话一般都是没有允许空值后面还default null,你可以用curdate()去返回当前日期。

背景:

存在表ods_sales_orders

实现:

或者

二者结果一致

存在疑问:

目的是提取字段create_date的年月

原数据:

*** 作:

因为原字段create_date是字符串类型,所以用TO_DATE()将其转化为日期类型,再利用dateformat()

结果:

为什么不是显示成'2019-02'这种形式,哪里有出错吗?但date_format(create_date,'YYYY-mm')显示的月份部分全部为00

回答:

hive和mysql的语法并不完全一致,hive里dateformat的格式是只有'yyyy-MM-dd HH',对应与mysql 的'%Y-%m-%d %H'

修改如下:

总结:

附:

hive日期函数

mysql 怎么获取前一个月的日期和前一年的日期

set @dt = now();

select extract(year_month from date_add(@dt, interval -1 month));

select extract(year_month from date_add(@dt, interval -1 year));

这样就可以了

以上就是关于mysql如何查某年某月至某年某月的数据,没有日全部的内容,包括:mysql如何查某年某月至某年某月的数据,没有日、MySQL语句中怎样获取当前系统日期、hive中提取年月(与mysql语法存在差异)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9749679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存