簡體   English   中英

如何將SQL時間戳轉換為實體框架中的字符串?

[英]How to convert SQL timestamp to a string in Entity Framework?

我需要從SQL表中檢索MAX(時間戳)值到字符串變量,但無法弄清楚如何。

所以,如果我的表/實體設置如下:

**DEPARTMENTS**
Department  varchar(10) PK
LastUpdated timestamp

Linq查詢會是什么樣子? 我嘗試了幾次迭代但總是出錯。

編輯:這是我嘗試的一個例子

 var result = (from d in _context.LOG_Departments
                      select d.LastUpdated).Max().SingleOrDefault();

錯誤:“無法將類型'byte'隱式轉換為'string'

編輯解決方案:

public string MaxDepartment()
    {

        CPLinkEntities _context = new CPLinkEntities();
        var results = _context.LOG_Departments.Max(t => t.LastUpdated);
        string hex = BitConverter.ToString(results);
        hex =  hex.Replace("-", "");
        return hex;
    }

時間戳不是日期時間的事情:

http://technet.microsoft.com/en-us/library/ms182776.aspx

是一種在數據庫中公開自動生成的唯一二進制數的數據類型。 rowversion通常用作版本標記表行的機制。 存儲大小為8個字節。 rowversion數據類型只是一個遞增的數字,不保留日期或時間。 要記錄日期或時間,請使用datetime2數據類型。

然后你可以使用

long timeStampLong = BitConverter.ToInt64(value, 0);

得到一個很長的回來(如果你願意,可以把那個長的轉換成字符串)。

我想出了如何進行轉換。

public string MaxDepartment(){

    CPLinkEntities _context = new CPLinkEntities();
    var results = _context.LOG_Departments.Max(t => t.LastUpdated);
    string hex = BitConverter.ToString(results);
    hex =  hex.Replace("-", "");
    return hex;
}

它可能是這樣的:

yourDBContext context=new yourDBContext();
var maxTimestamp = context.yourTable.Max(t => t.Timestamp);

關於使用linq的更多細節,我更願意看到這一點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM