Sql 将字符串转换为视图中的日期
我在这里遇到了一个问题,首先我必须将视图中的日期(即字符串)转换为日期,但我不知道怎么做 这是我的样本:Sql 将字符串转换为视图中的日期,sql,sql-server,date,view,data-conversion,Sql,Sql Server,Date,View,Data Conversion,我在这里遇到了一个问题,首先我必须将视图中的日期(即字符串)转换为日期,但我不知道怎么做 这是我的样本: 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); 但是由于这个原因,我不能改变日期的格式 PS:我必须在我的代码中使用这种
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);
但是由于这个原因,我不能改变日期的格式
PS:我必须在我的代码中使用这种视图。您不应该使用字符串作为日期,您自己在问题中也提到了这一点。由于您使用的是SQL Server,您可以在文本日期上使用
TRY\u CONVERT
:
选择FID、Fname、Fcount,然后尝试将(datetime、FDate)转换为FDate
来自[dbo].[DataFoodView];
但最好的解决方法是在视图定义中使用有效的日期文字:
创建视图[dbo]。[DataFoodView]
作为
从中选择*
(数值(1,N'mik',5,'20200502'),
(1,N'coca',5,'20200502'))
作为SM(FID、Fname、Fcount、FDate);
现在,日期文字是明确的,表示您想要的内容。尝试使用convert函数
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);
SQLServer在识别日期格式方面非常灵活。因此,您可以在
选择中转换:
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);
或者,您可以转换值()
中的第一个值(或者所有值,如果您愿意):
是一个dbfiddle。请用您正在使用的数据库标记您的问题。我根据语法添加了“sql server”标记。我不想在日期中使用字符串,但我不知道如何以正确的格式使用它!顺便说一句,谢谢你的回答,你救了我一天:)
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);