我有一个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
请帮忙。
答案 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);