首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel/SQLite日期序列号

Excel/SQLite日期序列号
EN

Stack Overflow用户
提问于 2010-05-05 10:00:55
回答 5查看 4K关注 0票数 2

如何让SQLite将excel类型的序列号转换为日期,例如,我希望表中的整数40074以某种方式获得日期18-9月-2009年9月?

日期已经在SQLite中了。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-05-05 14:48:27

代码语言:javascript
复制
sqlite> SELECT DATE('1899-12-30', '+40074 days');
2009-09-18
票数 3
EN

Stack Overflow用户

发布于 2010-05-05 10:16:45

这似乎起作用了:

代码语言:javascript
复制
sqlite> SELECT DATETIME((49400 * 3600 * 24) - 3014928000, 'unixepoch');
2009-09-18 00:00:00

老实说,我只是猜测并检查了那里的常量,但我相信有简单的数学来支持它。

它看起来也适用于早于纪元的日期,但我还没有彻底测试过它。

票数 3
EN

Stack Overflow用户

发布于 2010-05-05 10:13:28

Excel将日期存储为自1899年12月30日以来的天数,因此要将数字转换为日期或从日期转换为日期,只需计算1899年12月30日和之后的日期之间的天数。如何做到这一点完全取决于您使用的是哪种语言,但以C#为例,以下方法将会起作用:

代码语言:javascript
复制
var epoch = new DateTime(1899, 12, 30);

int number = 40074;
var date = epoch.AddDays(number);
Console.WriteLine(date);

var date = new DateTime(1987, 5, 3);
int number = (int) date.Subtract(epoch).TotalDays;
Console.WriteLine(number);

(如果你想知道为什么纪元是1899年12月30日,这是因为实际的纪元应该是1900年1月1日,但Excel错误地认为1900年是闰年)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2770168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档