【问题标题】:ytd problems in sqlsql中的年初至今问题
【发布时间】:2013-10-05 11:51:17
【问题描述】:

如果用户输入的受雇日期为 02/03/2013,那么它将显示从 01/01/2013(年初)到 30/03/2013(结束给定月份)。

提取结果的查询是什么。

empno  hiredate    name
-----------------------
01     02/03/2013  abc
02     23/07/2013  bvg
03     05/04/2013  fhdsk
04     22/08/2013  kjk

格式为 dd/mm/yyyy

【问题讨论】:

  • 您要检索的内容并不完全清楚。你能举个例子吗?另外,您的日期格式是 mm/dd/yyyy 还是 dd/mm/yyyy?

标签: mysql sql-server-2008 oracle10g business-objects


【解决方案1】:

您需要提供更多信息,例如表架构、示例数据和您想要的示例。您的解决方案可以像这样基本:

SELECT *
FROM employee
WHERE hiredate between '01/01/2013' AND '30/03/2013';

或者您期待的不仅仅是 SQL 代码?


这里有一些伪代码可以帮助你。从概念上讲,这些是用户定义的函数,具有所示的逻辑。

SELECT *
FROM hiredate BETWEEN udf_BOY('02/03/2013') AND udf_EOM('02/03/2013');

udf_BOY(@date) :==
RETURN  CAST('01/01/' + DATEPART(year, @date) AS datetime)

udf_EOM(@date) :==
RETURN DATEADD(DAY, -(DAY(DATEADD(MONTH, 1, @date))), DATEADD(MONTH, 1, @date))

【讨论】:

  • 用户应输入雇用日期动态,例如:如果我们给出 02/03/2013,那么它会提取从年度分层到月末的数据。所以在我的查询中,它给出了 2013 年 1 月 1 日至 2013 年 3 月 31 日之间的受雇日期之类的 o/p
猜你喜欢
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 1970-01-01
  • 2019-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多