|
|
1
19
根据上的BOL条目 DATEDIFF ( 争论 第)节)对于SQL Server 2005,
因此,您可能会陷入动态SQL或使用case语句的困境。 但我选择的是case版本,而不是动态SQL。 |
|
|
2
16
很遗憾,旧的但仍然有效。 我是这样做的,只是想分享代码,这样你就不必做我必须做的所有恼人的输入。涵盖所有可能的日期部分。只需替换函数名和要为其他T-SQL日期函数实现的日期函数。 复制并粘贴节
|
|
|
3
2
除了建议的动态SQL或case语句之外,您唯一真正能做的就是始终在粒度日期部分执行datediff,然后进行upconvert。不过,这并不是一个简单的例子,如果您试图用datediff在太大的范围内细化一个部分,例如datediff(second,0,getdate()),那么函数中就会溢出。但是,如果你只需要一些小部件,你就可以了(仔细检查一下你关心的最大日期值)。 例如
如果我想将其转换为小时、天等,我可以将结果除以适当的数量。它不会考虑闰年等因素。 |
|
|
4
1
当然,使用下面这样的动态查询非常有效,我假设您计划只使用@datepart的缩写。我建议在datepart中至少使用varchar(4),这将处理诸如YYYY和MCS之类的缩写。快乐编码:
|
|
|
5
0
我觉得没有比你描述的更好的方法了。SQL Server可能会将datediff查询编译为一组依赖于datepart参数的操作。所以你需要一个案例或者动态查询。 |
|
|
6
0
为此,我创建了一个标量值函数。它基于上面提到的解决方案,但更容易在代码中实现
在查询中,可以使用如下函数:
|
|
|
Johnny T · 基于当前值的SQL合并表[重复] 10 月前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 10 月前 |
|
ojek · 如何对SQL结果进行分组和编号? 10 月前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 10 月前 |
|
|
Sax · 规范化Google表格(第一步) 10 月前 |
|
|
BarıŠUÅaklı · 如何在ON冲突更新中使用CTE中的值 10 月前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 10 月前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 10 月前 |
|
|
Nebula Tech · 在SQL Server中搜索字符串中单词的多次出现 10 月前 |