视图和存储过程的不同结果

Posted

技术标签:

【中文标题】视图和存储过程的不同结果【英文标题】:Different result in view and stored procedure 【发布时间】:2013-10-25 06:46:45 【问题描述】:

我的表结构是这样的

我正在为此表创建视图

从 dbo.tbPatientReport 中选择输入

表格中的数据是这样的

如果我从 sql 查询中执行视图,那么它将给出类似的输出

选择从view_abc输入

期望的输出

【问题讨论】:

输出有什么问题?您希望采用不同的格式还是什么? 我想要像表格数据这样的输出。但它会给我像视图数据这样的输出 我得到了日期和时间转换的链接Date and Time function 在这个链接中所有可用的日期和时间功能 【参考方案1】:

您应该在结果中根据需要格式化日期。 例如

SELECT FORMAT( Entered,'MM/dd/yyyy hh:mm:ss tt','en-US') AS 'US'

FORMAT 是作为 Sql Server 2012 的一部分引入的新内置字符串函数之一。它使用可选的文化参数值返回以指定格式格式化的值。它不是 Sql Server 原生函数,而是 .NET CLR 依赖函数。

语法:格式(值,格式[,文化])

编辑 你能测试一下这是否有效。

SELECT CONVERT(VARCHAR(20), SYSDATETIME(), 22)

Format: MM/DD/YY HH:MI:SS AM
Output: 10/25/13 2:21:00 PM

唯一的问题是您无法获得 FullYear。

【讨论】:

'FORMAT' 不是可识别的内置函数名称。在 SQL 2008 中,他希望在 SQL 2008 中使用这种格式 但我使用的是 SQL 2008 尝试上面给出的字符串会给你想要的输出。【参考方案2】:

您的表结构中的 [Entered] 列 [Datetime] 不允许空值,它没有被勾选。

您使用的是什么版本的 SQL Management Studio?您是在普通选择查询中选择数据还是选择查看数据? 在旧版本中,“查看”会打开编辑窗口,您的代码位于顶部。

在编辑视图中,最后一行将始终为 NULL,因为它需要新数据。

【讨论】:

以上是关于视图和存储过程的不同结果的主要内容,如果未能解决你的问题,请参考以下文章

视图,触发器,存储过程综合

如何在 MVC 视图中显示存储过程结果

MYSQL数据太大时怎么优化 视图?存储过程? - 技术问答

SQL-视图与存储过程

oracle存储过程连续执行结果不同

在 MVC 视图中显示存储过程的结果 (EF 5 / MVC 4)