Mysql 从当前月份动态声明开始/结束日期

Mysql 从当前月份动态声明开始/结束日期,mysql,sql,sql-server,oracle,datetime,Mysql,Sql,Sql Server,Oracle,Datetime,我有一个非常基本的查询,我每月运行一次。每个月我都必须手动更改查询以适应当前月份的开始和结束日期。我试过使用以前答案中的一些例子,但似乎无法使其起作用。值得注意的是,我试图包括一个月的最后一天,如23:59:59参数所示。实现这一目标的最佳方式是什么 SELECT * FROM WorkOrder where active = 1 and WorkOrderStatusId in (6,8) AND dateCreated >= '5/1/2017' and dateCreated <

我有一个非常基本的查询,我每月运行一次。每个月我都必须手动更改查询以适应当前月份的开始和结束日期。我试过使用以前答案中的一些例子,但似乎无法使其起作用。值得注意的是,我试图包括一个月的最后一天,如23:59:59参数所示。实现这一目标的最佳方式是什么

SELECT *
FROM WorkOrder
where active = 1 and
WorkOrderStatusId in (6,8) AND
dateCreated >= '5/1/2017' and
dateCreated <= '5/31/2017 23:59:59'
选择*
从工作订单
其中活动=1,且
(6,8)和
创建日期>='2017年5月1日'

dateCreated您实际上可以做的是获取月份和年份

SELECT *
FROM WorkOrder
where active = 1 and
WorkOrderStatusId in (6,8) AND
year(dateCreated) = 2017
month(dateCreated) = 5  
三件事:

第一:在大多数DBMS表示中,日期看起来像是2017-05-01
而不是2017年5月1日


第二:你想要这种表达式(注意
哪个sql数据库?我真的很感谢你的回答!我使用的是Microsoft sql。很抱歉没有提及,我一直认为如果我没有指定MySQL(这是Linux,对吗?)MS SQL是默认设置。我对数据库了解不多,因此我非常感谢您提供的信息。我一定会在将来指定:)如果您在答案解决问题时选中绿色复选框,对社区很有帮助。MySQL和Oracle都运行在Windows/Linux/FreeBSD上。MySQL也在Mac上运行。Microsoft SQL Server仅在Windows上运行(他们有一个原型Linux版本)。
where  dateCreated >= '2017-05-01'
  and  dateCreated <  '2017-06-01'
 where dateCreated >= first_day_of_last_month
   and dateCreated <  first_day_of_this_month
where dateCreate >= 
         DATEADD(MONTH, -1, DATEADD(DAY, 1-DATEPART(DAY, GETDATE()), GETDATE()))
  and dateCreate < 
         DATEADD(DAY, 1-DATEPART(DAY, GETDATE()), GETDATE())
where dateCreated >= DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 1 MONTH
  and dateCreated <  DATE_FORMAT(CURDATE(), '%Y-%m-01')
where dateCreate >= ADD_MONTHS(-1, TRUNC(SYSDATE, 'MM'))
  and dateCreate <  TRUNC(SYSDATE, 'MM')