Beast Mode Filter

Hello All,
I have these 2 Beast Mode calc and I am trying to understand why it is not filtering from.
(2022-01-01) to (today).
What am I missing here please?
And with this below too why am I getting error. Any help please?
I just want to filter dates from start of previous year to today of last year.
2022-01-01 to same day today of last (2022-11-06)
thank you all.
Best Answers
-
@carthur On your second formula, you are getting an error because the logic needs to be within a case statement. I'd suggest doing this instead:
case when YEAR(`ORDER_DATE`) = YEAR(DATE_SUB(CURDATE(),interval 1 year)) and ORDER_DATE <= DATE_SUB(CURDATE(),interval 1 year) then 'Include' else 'Exclude' end
1 -
CURRENT_DATE() - INTERVAL (DAYOFYEAR(`ORDER_DATE`)-1) DAY - INTERVAL 1 YEAR
- DAYOFYEAR - Returns the day number of the year of the given date, ORDER_DATE in your example. (Jan 1 = 1, Dec 31 = 365/366)
- - INTERVAL (DAYOFYEAR(`ORDER_DATE`)-1) DAY - Subtract the number of days the current date is minus one so we get to day 1 of the year (Jan 1st)
- - INTERVAL 1 YEAR - Subtract an entire year so you'll get January 1st of the prior year
-INTERVAL is the same as DATE_SUB just a different format.
**Was this post helpful? Click Agree or Like below**
**Did this solve your problem? Accept it as a solution!**0
Answers
-
Your STR_TO_DATE format is not quite correct.
The first one isn't including the dashes that you've concatenated in there. The second is including commans which aren't included.
Try something like this:
CASE WHEN `ORDER_DATE` >= STR_TO_DATE(CONCAT(YEAR(CURRENT_DATE()-1), '-01-01'), '%Y-%m-%d') AND `ORDER_DATE` <= STR_TO_DATE(CONCAT(YEAR(CURRENT_DATE())-1, '-', MONTH(CURRENT_DATE()), '-', DAY(CURRENT_DATE())), '%Y-%m-%d') THEN 'YES' ELSE 'NO' END
**Was this post helpful? Click Agree or Like below**
**Did this solve your problem? Accept it as a solution!**1 -
You can also simplify the conditions to:
CASE WHEN `ORDER_DATE` >= CURRENT_DATE() - INTERVAL (DAYOFYEAR(`ORDER_DATE`)-1) DAY - INTERVAL 1 YEAR AND `ORDER_DATE` <= CURRENT_DATE() - INTERVAL 1 YEAR THEN 'YES' ELSE 'NO' END
**Was this post helpful? Click Agree or Like below**
**Did this solve your problem? Accept it as a solution!**0 -
@carthur On your second formula, you are getting an error because the logic needs to be within a case statement. I'd suggest doing this instead:
case when YEAR(`ORDER_DATE`) = YEAR(DATE_SUB(CURDATE(),interval 1 year)) and ORDER_DATE <= DATE_SUB(CURDATE(),interval 1 year) then 'Include' else 'Exclude' end
1 -
Thank you both.
@GrantSmith your second option didn't work but very interesting calculation, would you please explain that concept a little for me?
0 -
CURRENT_DATE() - INTERVAL (DAYOFYEAR(`ORDER_DATE`)-1) DAY - INTERVAL 1 YEAR
- DAYOFYEAR - Returns the day number of the year of the given date, ORDER_DATE in your example. (Jan 1 = 1, Dec 31 = 365/366)
- - INTERVAL (DAYOFYEAR(`ORDER_DATE`)-1) DAY - Subtract the number of days the current date is minus one so we get to day 1 of the year (Jan 1st)
- - INTERVAL 1 YEAR - Subtract an entire year so you'll get January 1st of the prior year
-INTERVAL is the same as DATE_SUB just a different format.
**Was this post helpful? Click Agree or Like below**
**Did this solve your problem? Accept it as a solution!**0
Categories
- All Categories
- Product Ideas
- 2.1K Ideas Exchange
- Data Connections
- 1.3K Connectors
- 309 Workbench
- 17 Cloud Integrations
- Data & ETL
- 2.3K Magic ETL
- 120 SQL DataFlows
- 666 Datasets
- Visualize & Apps
- 90 App Studio
- 198 Pro-code Components
- 2.6K Charting & Analyzer
- 873 Calculations & Variables (Beast Mode)
- AI & Data science
- 23 Domo AI & AI Chat
- 4 Managing AI
- 18 Jupyter Workspaces
- Automate
- 122 Workflows
- Alerts
- Distribute
- 118 Domo Everywhere
- 284 Reporting
- Manage
- 145 Governance & Security
- 489 APIs
- 11 Add-ins & Plugins
- 13 Domo Community Gallery
- 49 Product Releases
- 13 Domo University
- Community Forums
- 41 Getting Started
- 31 Community Member Introductions
- 118 Community Announcements
- 5K Archive