所以我有大量的excel文件没有正确格式化,因此他们的日期不是作为日期读取的,而是作为他们使用的日期序列(i想想自1900-1-1以来的天数?)。例如:41917.0054050926真的是10/5/2014 12:07:47 AM。
我需要的只是实际日期,而不是时间。我知道我可以通过41917 / 365.25获得一年,四舍五入并将其添加到1900年,但我不确定如何获得当天和月份。有没有内置到postgres来处理这个?如果没有,有没有人知道找到日期和年份的算术方法?
谢谢!
答案 0 :(得分:2)
我刚遇到这个问题,并编写了一个plpgsql函数来处理它。请注意,它仅适用于整数,这意味着它只会执行日期,而不是日期和时间。其他人可以随意扩展它。
CREATE OR REPLACE FUNCTION To_Timestamp_From_Excel (ExcelDate integer)
RETURNS timestamp without time zone AS $$
BEGIN
IF ExcelDate > 59 THEN
ExcelDate = ExcelDate - 1;
END IF;
RETURN date '1899-12-31' + ExcelDate;
END;
$$ LANGUAGE plpgsql;
如果你有日期和时间编码或你的字段类型是文本,你需要像这样调用它:
UPDATE myTable set MyDateField = to_Timestamp_From_Excel(MyDateField::integer)
答案 1 :(得分:0)
B1 中的 A1 中的数据输入:
=ROUND(A1,0)+1
并将 B1 格式化为 mm / dd / yyyy
例如:
答案 2 :(得分:0)
它有点凌乱而且不是100%准确,但我可以在自定义PG程序中这样做:
41917.0054050926 / 365.25获得年份
41917.0054050926%365.25获得一年中的某一天
然后我可以将一年中的某一天添加为前一年最后一天的间隔。
答案 3 :(得分:0)
我使用这样的指令: 选择时间戳“ 1899/12/30” +间隔“ 43404天43200” 获得'2018/10/30 12:00:00' 在Excel中,此日期为43404.5,那么我在间隔内的“天”之前有整数部分,并将分数乘以86400(每天的秒数)。
答案 4 :(得分:0)
尝试一下
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script>
</script>
<div class="menu">
<ul>
<li><a href="#">PureBasic</a></li>
<li><a href="#">PureBasic Forum</a></li>
<li><a href="#">PureArea</a></li>
<li><a href="#">Wikipedia</a></li>
<li><a href="#">Blank</a></li>
<li><a href="#">Blank</a></li>
<li><a href="#">Blank</a></li>
<li><a href="#">Blank</a></li>
</ul>
</div>
<div class="content"></div>