创建一个接受日期时间列表作为参数的存储过程

Posted

技术标签:

【中文标题】创建一个接受日期时间列表作为参数的存储过程【英文标题】:Create a stored procedure which accepts list of datatime as a parameter 【发布时间】:2020-03-27 06:26:42 【问题描述】:

我正在使用 SQL Server localdb ,EF 进行测试。

我想向存储过程发送一个名称、一个 ID 和一些日期时间来过滤我的表。

我可以创建一个接受List<DateTime> 作为参数的存储过程吗?如何从 C# 调用它?

CREATE PROCEDURE [dbo].[GetStudents]
    @id int = 0,
    @name varchar(50),
    @date  //date here accepts list of datetime?

【问题讨论】:

要将等效的列表传递给存储过程,您需要table valued parameter。阅读文档,尝试一下,遇到困难时再发帖。 那里有大量资源展示了如何从 C# 调用它。 @Dale K 谢谢,实际上,我使用 EF 从 asp.net mvc 调用存储过程,我想将 dateTime 列表作为一个参数传递给 sp,然后使用 @987654324 过滤数据库@...有可能吗? Google 是您的朋友 - 使用 TVP 在 EF 上获得大量点击。 【参考方案1】:

使用此字段和 varchar(max),然后将逗号分隔的字符串传递给您的过程。

如果你在 sql server 中再次需要一个列表/表,那么你可以编写拆分函数..

https://www.aspsnippets.com/Articles/Split-and-convert-Comma-Separated-Delimited-String-to-Table-in-SQL-Server.aspx

【讨论】:

以上是关于创建一个接受日期时间列表作为参数的存储过程的主要内容,如果未能解决你的问题,请参考以下文章

将日期作为 MySQL 存储过程的 IN 参数处理

从 SQL 存储过程返回工资单日期表

SQL 存储过程转换日期参数

在存储过程中使用日期时间作为参数更新表时出错

获取在特定日期创建和/或修改的存储过程列表?

在java中接受日期类型命令行参数