sql - 将 STUFF 与 DATE 一起使用
问题描述
我正在尝试使用 SQL Server 2016 中的 STUFF 功能来选择日期信息并将其返回到表中。有时会有多个日期返回。我已经使用 STUFF 来获取我需要的其他数据。
Email = STUFF((SELECT ', ' + [Value]
FROM EmailTable
WHERE ID = r.ID AND EmailType = 1
FOR XML PATH(''),TYPE).value('(./text())[1]','NVARCHAR(MAX)'),1,2,'')
这可以在适用的情况下返回多封电子邮件并且工作正常。现在的问题是我想做同样的事情,但要使用 DATE。
Date = STUFF((SELECT ', ' + DateValue
FROM DateTable
WHERE ID = r.ID
FOR XML PATH(''),TYPE).value('(./text())[1]','DATE'),1,2,'')
上面的代码片段只是示例,表名和变量名实际上是不同的,但它们应该传达我的意思。
最后一个代码片段的错误是由于“+”符号而无法工作。如果我把逗号加出来,我可以让它返回日期,但它们被包装在 XML 标记中。
它还必须返回一个 DATE 值,它不能转换为 NVARCHAR。
我不确定我所追求的是否可行,但我想我会问。
如果需要更多信息,请询问。
解决方案
评论太长了。
您的代码不能在单个列中返回多个日期值。SQL Server 不提供数组类型——或它们的等价物。
什么FOR XML PATH
是产生一个字符串。该字符串被格式化为 XML,但它仍然是一个字符串。在字符串中,您可以识别属性的类型。但是,表示形式是字符串。
您可以做的最好的是将日期存储为 YYYY-MM-DD 或 YYYYMMDD,这很容易在 SQL Server(以及几乎任何其他软件)中转换为日期。
推荐阅读
- python - 比较两个文件名列表 + 大小 + 修改时间
- python - 如何使用 Pyodbc 有效地分块 - 将大型数据帧加载到 Microsoft SQL Server 表中?
- python - 如何从 python Windows 10) 中启动 python?
- javascript - Axios 调用返回 net::ERR_EMPTY_RESPONSE 我不知道为什么
- google-chrome - Google Chrome 中的 Vue 3 / Vuex v4 开发工具在哪里?
- javascript - 用户。然后编号
- playwright - 使用剧作家创建具有持久上下文的多个窗口
- data-warehouse - AdventureworksDW 的 FactInternetSales 是累积快照表吗?
- algorithm - 如何有效地在具有低(Damerau-)Levenshtein 距离的列表中找到字符串对?
- python-3.x - 在 streamlit 应用程序中显示和导航可折叠的 json 树视图