2014-04-21 145 views
-2

我有一个像下面这样的SQL表。SQL日期时间数据

SELECT * FROM [icom].[dbo].[Periods] 

此表给我指定的期间。例如,第一阶段从8:00开始,在上午8:45结束。

当我运行查询时,它给了我日期和时间毫秒的格式。那我怎么能只有时间?像上午8:00?

+0

尝试在SQL中使用DATEPART来获取所需格式的时间。 – user2989408

+0

我建议您使用从数据库中获得的值,然后在应用程序中执行所有“格式化”。如果您不在数据库级进行处理,您将会更加灵活。如果你这样做,你会得到一个字符串。否则,您将拥有一个'DateTime',您可以根据需要进行转换和使用。 –

+0

我该如何格式化C#中的值? – GoGo

回答

0

假设你使用SQL Server(我想你),它听起来就像你正在使用的datetime数据类型:

datetime代表的时间瞬间。在内部,datetime由一对整数的:

  • 第一个措施,以天为单位从时代偏移。一个时代是日历系统的零点,它对于SQL Server 1 January 1900 00:00:00.000
  • 第二个是自开始日起的[正数]偏移量,以毫秒为单位。

是如何内部表示表示视觉完全取决于你,虽然SQL Server有一个[配置]默认的转换模式。

如果您以编程方式访问您的SQL,请使用C#说,API会自动将SQL Server datetime数据类型映射到您的语言等效类型(用于C#的System.Datetime)。问题出现了:您有责任以视觉或文字方式对其进行格式化。

如果您只想查看日期组件。您可以使用convert()/cast()函数在T-SQL中对其进行格式化:convert(varchar(32),{some-datetime-expression},116)将把{some-datetime-expression}转换为格式dd mmm yyyy。许多其他选项。

此外,假设您使用的是SQL Server的最新版本,如果您只想处理日期,请更改架构以使用date数据类型而不是datetime

0

您可以在查询中添加CONVERT命令。像这样:

SELECT CONVERT(VARCHAR(8), GETDATE(), 108) * FROM [icom].[dbo].[Periods] 

更多格式和例子你可以看看:http://www.sql-server-helper.com/tips/date-formats.aspx我希望帮助!

+0

SQL 2008及更高版本中还有一个“Time”数据类型。使用这可能会更容易,但我不确定您的具体情况。 –

0

您也可以使用SELECT DATEPART(hh, [YourDatetimeColumn]) FROM [Periods]。您也可以通过查看this stackoverflow question找到有用的答案。

+0

和会议记录? –