gpt4 book ai didi

sql - 创建 SQL View 时如何从日期时间获取日期?

转载 作者:行者123 更新时间:2023-12-04 17:51:18 25 4
gpt4 key购买 nike

我搜索了几个小时,发现了很多关于如何将日期时间字段转换为日期的信息。所有这些在我的 SQL 窗口中都运行良好。但是,当我尝试在 View 中使用它时,它崩溃了。

版本:SQL Server v17.0

例子:
表中字段为:InvoiceDate(datetime,null)
数据是:2016-11-15 00:00:00.000

我的 SQL 代码是:

CONVERT(date,ihhd.InvoiceDate,101) AS InvoiceDate

我的 InvoiceDate 结果是:2016-11-15

当我将相同的代码放入 View 时,我得到了这个:

SQL Execution Error.
Executed SQL SELECT [selected fields]
Error Source: .Net SqlClient Data Provider
Error Message: Cannot call methods on date.

我尝试将其转换为 varchar:

CONVERT(varchar,ihhd.InvoiceDate,101) AS InvoiceDate

在 View 窗口中不会返回相同的错误。但是,将使用此数据的报告作者不允许进行“类似日期”的比较,因此我需要日期格式的字段。

我也试过对它进行双重转换:

CONVERT(date,CONVERT(varchar,ihhd.InvoiceDate,101),101) AS InvoiceDate

再次,SQL 窗口正常, View 窗口抛出同样的错误。

我做错了什么?

最佳答案

您正在将 DATETIME 转换为 DATE,因此它将产生预期的 yyyy-mm-dd。如果您想要 MM/DD/YYYY,则需要转换为字符串。请记住,这个转换后的字符串不是日期,实际上应该归入表示层。

Select AsString = convert(varchar(10),GetDate(),101)  -- notice the varchar(10)
,AsDate = convert(date,GetDate(),101)

返回

AsString    AsDate
06/14/2017 2017-06-14

相反地,您可以将 MM/DD/YYYY 字符串转换为日期

Select convert(date,'06/14/2017',101)   -- If 2012+ try_convert()

返回

2017-06-14

关于sql - 创建 SQL View 时如何从日期时间获取日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44551308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com