Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将字符串转换为视图中的日期_Sql_Sql Server_Date_View_Data Conversion - Fatal编程技术网

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);