【发布时间】:2017-06-01 12:09:15
【问题描述】:
SELECT
CAST((DATEDIFF(day, '21 JULY 2017', CAST(DAY(DATEADD(mm, DATEDIFF(mm, -1, '21 JULY 2017'), 0) -1) +
LEFT(CONVERT(VARCHAR, DATENAME(MM,'21 JULY 2017'), 120), 10) +
CAST(YEAR('21 JULY 2017') AS VARCHAR(4)) AS DATETIME))) AS INT ) * (2.08 / DAY(EOMONTH('21 JULY 2017')))
我想计算天数计算。
但我收到一个错误:
将 varchar 值“July”转换为数据类型 int 时转换失败。
【问题讨论】:
-
用
'2017-07-21'代替'21 JULY 2017'。 -
你要计算什么?好像你的sql很复杂,我想如果你解释一下你的目标是什么,我们可能会更好地帮助你。
-
展示你的尝试是可以的,但我怀疑当前的查询是否是实现目标的最佳方式。但很难知道,因为您没有告诉我们您想要达到的目标。理想情况下,edit 问题并添加一些样本数据和您的预期结果。
-
感谢您的回复..实际情况如下..如果他在 2017 年 7 月 21 日加入,1 个月(比如 7 月)员工可以获得 2.08 天的假期(整个日历月).. 所以他应该从 7 月 21 日至 7 月 31 日仅获得 10 天按比例分配的叶子。我在这里仅计算(7 月 31 日至 7 月 21 日)/(2.08 * 月天数)
标签: sql-server