我有一個(gè)表,其中包含一些 time(7) 類型的列。我現(xiàn)在需要將這些列從 time(7) 轉(zhuǎn)換為 Ticks 作為 BIGINT(來(lái)自 .NET),因?yàn)?mssql 不支持超過(guò) 24 小時(shí)的時(shí)間。我如何更新那些已經(jīng)存在于數(shù)據(jù)庫(kù)中的 time(7) 列,以現(xiàn)在使用 SQL 來(lái)表示以滴答為單位的時(shí)間?例如,如果我在數(shù)據(jù)庫(kù)中有一個(gè)存儲(chǔ)有“07:00”的列,那將類似于2384623897129873作為 BIGINT。我想知道如何進(jìn)行這種轉(zhuǎn)換。
2 回答

富國(guó)滬深
TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
找到了答案。
正如這份文件所說(shuō):
一毫秒有 10,000 個(gè)滴答聲
所以我將 Time(7) 轉(zhuǎn)換為毫秒,然后乘以 10.000:
SELECT CONVERT(BIGINT, DATEDIFF(MILLISECOND, 0, MyCurrentDuration)) * 10000 as Ticks from CalculationResult

慕妹3146593
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
根據(jù)doco,日期時(shí)間中的刻度數(shù)從特定的起點(diǎn)開始 - 0001 年 1 月 1 日。這意味著如果您想將刻度作為偏移量存儲(chǔ)到任意長(zhǎng)度的一天中,您將需要減去在那天從 DateTime.Now.Ticks 開始。
由于您將時(shí)間保持在不是 24 小時(shí)的循環(huán)中,因此請(qǐng)確保您仍然保留帶有刻度偏移的日期 - 否則您將不知道900,000,000,000
是從第 1 天偏移 25 小時(shí)還是從第 2 天偏移 1 小時(shí)。
- 2 回答
- 0 關(guān)注
- 260 瀏覽
添加回答
舉報(bào)
0/150
提交
取消