视图和存储过程的不同结果
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,因为它需要新数据。
【讨论】:
以上是关于视图和存储过程的不同结果的主要内容,如果未能解决你的问题,请参考以下文章