我在这里遇到了一个问题,起初我必须将视图中的日期(这是一个字符串(convert
放入date,但我不知道如何做到这一点。
这是我的样品:
CREATE VIEW [dbo].[DataFoodView]
AS
SELECT * FROM
( VALUES (1, N'mik', 5, '2020-5-2'),
(1, N'coca', 5, '2020-5-2'))
AS SM (FID, Fname, Fcount, FDate);
但由于这个创建,我无法更改日期的格式。
附言:我必须在我的代码中使用这种视图。
您不应该使用字符串表示日期,您自己在问题中也提到了这一点。由于您使用的是SQL Server,因此可以在文本日期上使用TRY_CONVERT
:
SELECT FID, Fname, Fcount, TRY_CONVERT(datetime, FDate) AS FDate
FROM [dbo].[DataFoodView];
但最好的解决方案是在视图定义中只使用有效的日期文字:
CREATE VIEW [dbo].[DataFoodView]
AS
SELECT * FROM
( VALUES (1, N'mik', 5, '20200502'),
(1, N'coca', 5, '20200502'))
AS SM (FID, Fname, Fcount, FDate);
现在,日期文字是明确的,意味着你的意图。
尝试使用转换函数
CREATE VIEW [dbo].[DataFoodView]
AS
SELECT * FROM
( VALUES (1, N'mik', 5, convert(datetime, '2020-5-2',120)),
(1, N'coca', 5, convert(datetime, '2020-5-2',120)))
AS SM (FID, Fname, Fcount, FDate);
SQL Server在识别日期格式方面非常灵活。因此您可以在SELECT
:中进行转换
CREATE VIEW [dbo].[DataFoodView] AS
SELECT FID, Fname, Fcount, CONVERT(DATE, FDate) as FDate
FROM ( VALUES (1, N'mik', 5, '2020-5-2'),
(1, N'coca', 5, '2020-5-2')
) AS SM(FID, Fname, Fcount, FDate);
或者,您可以转换VALUES()
中的第一个值(如果您愿意,也可以转换所有值(:
CREATE VIEW DataFoodView AS
SELECT FID, Fname, Fcount, FDate
FROM ( VALUES (1, N'mik', 5, CONVERT(DATE, '2020-5-2')),
(1, N'coca', 5, '2020-5-2')
) AS SM(FID, Fname, Fcount, FDate);
这里有一个db<gt;不停摆弄