如何让SQLite将excel类型的序列号转换为日期,例如,我希望表中的整数40074以某种方式获得日期18-9月-2009年9月?
日期已经在SQLite中了。
发布于 2010-05-05 14:48:27
sqlite> SELECT DATE('1899-12-30', '+40074 days');
2009-09-18发布于 2010-05-05 10:16:45
这似乎起作用了:
sqlite> SELECT DATETIME((49400 * 3600 * 24) - 3014928000, 'unixepoch');
2009-09-18 00:00:00老实说,我只是猜测并检查了那里的常量,但我相信有简单的数学来支持它。
它看起来也适用于早于纪元的日期,但我还没有彻底测试过它。
发布于 2010-05-05 10:13:28
Excel将日期存储为自1899年12月30日以来的天数,因此要将数字转换为日期或从日期转换为日期,只需计算1899年12月30日和之后的日期之间的天数。如何做到这一点完全取决于您使用的是哪种语言,但以C#为例,以下方法将会起作用:
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年是闰年)
https://stackoverflow.com/questions/2770168
复制相似问题