sql - DATEPART 作为参数

标签 sql sql-server tsql sql-server-2008 stored-procedures

我猜这是不可能的,因为引擎不喜欢它,但是有没有办法(禁止动态 SQL)传入 DATEPART作为过程的参数?

最佳答案

一种选择是使用带有参数的 CASE(最好使用 int 枚举而不是字符串):

declare @part varchar(10)
set @part = 'YEAR'
select case @part 
            when 'YEAR' then datepart(yy, SomeDateTimeColumn) 
            when 'MONTH' then datepart(mm, SomeDateTimeColumn) 
            else datepart(dd, SomeDateTimeColumn) 
        end
from SomeTable

关于sql - DATEPART 作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3943775/

相关文章:

用于非冗余目的的 SQL Azure 地理复制

mysql - 3 个表的 sql SELECT 查询

mysql - 临时表发送大型结果集(临时表和发送大型结果集哪个更糟)

c# - TransactionScope 内的父子插入导致外键约束错误

sql-server - 如何从两列中获取双向组合的计数?

sql - T-SQL 如何从一列中选择没有重复值的行?

tsql - 使用SELECT AS别名和内部联接的TSQL上的DB2错误

MySQL 查询带标签的项目 ListView

mysql - 如何向 mysql 数据库表添加行并将其显示在 vb.net 的列表框中?

SQL:根据变量选择动态列名