2013-07-25 96 views
2

这是我在SQL Server转换日期时间为Int

SELECT CAST(CAST('2012-01-25 10:00:00.000' AS DATETIME) AS INT) + 2 

结果所做的样本是40933

我怎样才能做到这一点使用C#?从哪里和如何这个整数来?

参考:Convert from DateTime to INT,但是这是我需要在C#中

+0

作为一个时间戳? –

+0

你为什么想在C#中做到这一点? –

+0

,因为我正在使用服务的应用程序,我不能在那里使用sql程序 –

回答

4

我不明白你为什么会需要代表DateTime在C#中的一个整数,但你可以使用这个方法:

public static int DateTimeToInt(DateTime theDate) 
{ 
    return (int)(theDate.Date - new DateTime(1900, 1, 1)).TotalDays + 2; 
} 

你可以使用这个方法的反向操作:

public static DateTime IntToDateTime(int intDate) 
{ 
    return new DateTime(1900, 1, 1).AddDays(intDate - 2); 
} 
+0

Thanku这么多,我需要这个,因为有数据库中的字段表示DateTime作为这个整数,我想它是为了优化.... 和我正在开发窗口应用程序,这是现有应用程序的扩展......并且只有沟通的方式是通过数据库服务,所以我需要在我的PCL的所有操作中执行 –

+1

@阿伦:[坏习惯踢:处理日期/范围查询](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling-date-range-queries.aspx) - 您应该* *不会**将日期存储为字符串或整数 - 您只是以这种方式寻求麻烦。使用'DATE'或'DATETIME'数据类型! –

+1

@克劳斯请你提一下为什么这个+/- 2为? – Rezoan

2

扩展到投日期时间为timestamp

public static int DateTimeToInt(this DateTime theDate) 
{ 
    int unixTime = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; 
    return unixTime; 
} 

更好的投日期时间长,使用属性DateTime.Ticks