我在MySql中有一个存储DateTime.Ticks的整数列.
单个刻度表示一百纳秒或一千万分之一秒.一毫秒内有10,000个刻度.
此属性的值表示自0001年1月1日午夜12:00:00起经过的100纳秒间隔的数量
如何在查询中将其转换为DateTime?我尝试了很多东西,但无法让它发挥作用.
对于ticks 634128921500016150我希望得到mysql datetime'2010-06-23 12:06:50'
我相信以下应该可行,但它给出'4009-06-22 12:15:50.001600'.它似乎已经过去了2001年,1天9分钟......如果岁月和天数一致,我可以手动修复它,但分钟似乎有些奇怪.
SELECT DATE_ADD('0000-01-01 00:00:00',
INTERVAL 634128921500016150/10000000 SECOND_MICROSECOND);
Run Code Online (Sandbox Code Playgroud)
我尝试添加更多的零,但它永远不会匹配:|
我也尝试了Jon Skeet的建议,但它给出了几乎相同的结果(一些不同的部分)
而不是使用SECOND_MICROSECOND添加,尝试只通过MICROSECOND添加:
SELECT DATE_ADD('0001-01-01 00:00:00',
INTERVAL 634121049314500000/10 MICROSECOND);
Run Code Online (Sandbox Code Playgroud)
编辑:我刚刚解决了为什么岁月如此错误.MySQL的最短日期是1000年.所以我建议你把它改成:
SELECT DATE_ADD('0001-01-01 00:00:00',
INTERVAL (634121049314500000 - base_ticks)/10 MICROSECOND);
Run Code Online (Sandbox Code Playgroud)
base_ticks来自的蜱的价值在哪里new DateTime(1001, 1, 1).Ticks.
哎呀,你可以随心所欲地改变(例如2000年) - 甚至可能在9分钟的问题上工作.多年来它有可能弥补闰秒,或类似的东西.
| 归档时间: |
|
| 查看次数: |
3634 次 |
| 最近记录: |