从sql中的datetime列获取日期

时间:2016-02-08 20:31:07

标签: c# sql asp.net

我有一个Product表。我想从datetime列获取日期。 我写了这个查询。

查询代码在这里

SELECT Date = CONVERT(DATE, Date) FROM Product

查询正在运行sql server management studio并返回正确的日期,但是当从C#调用时,查询运行并返回结果,但它返回datetime而不仅仅是日期。

例如,如果查询:

SELECT Date = CONVERT(DATE, Date) FROM Product

在管理工作室返回09-02-16

C#代码

SqlDataAdapter adr;
        adr = new SqlDataAdapter("SELECT Date = CONVERT(DATE, Date) FROM Product", conn);

返回09.02.2016 00:00:00

我希望返回的C#代码是:09-02-16

请帮忙。

7 个答案:

答案 0 :(得分:1)

根据您的评论,您可能想尝试:

SqlDataAdapter adr;
        adr = new SqlDataAdapter("SELECT [Date] = convert(VARCHAR,[Date], 5) FROM Product", conn); 

convert(datetime,[date], 5)将确保您将结果返回为DD-MM-YY

答案 1 :(得分:0)

尝试使用此SELECT CONVERT(date,[Date]) as date FROM Product

答案 2 :(得分:0)

Date是SQL中的关键字,所以我会避免使用它:

var adr = new SqlDataAdapter("SELECT CAST([Date] AS DATE) AS OnlyDate FROM Product", conn);

答案 3 :(得分:0)

您的查询肯定是错误的。或者你想做什么

SELECT CONVERT([DATE], 102) FROM Product

(OR)声明一个变量并将数据存储在那里

DECLARE @Date DATETIME;
SELECT @Date = TOP 1 CONVERT([DATE], 102) FROM Product

假设您有一个名为DATE的列,除非您将格式字符串作为参数传递,否则您将不得不使用正确的格式字符串。虽然你的查询有点不清楚。

答案 4 :(得分:0)

根据您的评论:

  

我没有错误。查询代码运行结果:2015-11-23。但是c#   代码运行结果:23.11.2015 00:00:00

我认为您的查询已经正常运行。

但是,日期格式不同!

所以你需要做的就是转换你希望的format中的DateTime。

注意:默认情况下,线程的文化基于计算机的设置(在您的情况下,它是dd.MM.yyyy)。 SQL Management Studio上的查询结果取决于您选择的列(在您的情况下:yyyy-MM-dd)。

答案 5 :(得分:0)

  

c#代码正在运行结果:23.11.2015 00:00:00

你是怎么看到这个以及在哪里的?在VS的调试器中?屏幕上?

可能只是根据您的文化(PC上设置的格式)进行格式化。您可能不了解查看DateTime对象的C#中的字符串表示(可以根据您的语言环境格式化)和Sql Server中的默认ISO格式之间的区别。

此外,c#中没有这样的东西只是一个日期对象,它总是一个带时间的日期(DateTime),尽管时间组件的对象的时间方面将有0个值。

简而言之,它可能正如它应该的那样工作。

答案 6 :(得分:0)

真正的代码在这里:

 SqlDataAdapter adr; 
    adr = new SqlDataAdapter("SELECT LEFT(CONVERT(VARCHAR, Date, 120), 10) from Product", conn);