2013-01-10 37 views
-1

我已经继承了一个日期列类型为Varchar的MySQL数据库。将十进制存储为varchar转换为datetime

该列包含十进制字符串。例如:41143.646585648

我该如何将其转换为DateTime格式?

+0

三江源这个链接,但链接的问题,假定我的日期存储在MM/DD/yyyy或相似的格式。我的问题是我有一个十进制数 – nothingtosee

+0

在varchar列中存储为十进制的日期时间:寻找开发人员的时间! –

+0

数字是什么意思?你说这是一个日期和时间的表示,但以什么方式?很难猜到你。 –

回答

0

您只需要知道原始开发者定义为零值的日期。然后,将一个整数天数添加到该日期,然后将小数部分乘以86400以获得秒数并进行算术以确定小时,分钟和秒,这是一件简单的事情。

如果你有一个你知道实际日期和存储值的行,你可以通过减法很容易地确定零日期。

+0

标记为答案。这是一个非常贫穷和模糊的问题,你是绝对正确的。 – nothingtosee

0

您可以将字符串替换为小圆点,但对于unix时间戳,剩余的数字数将变为高。我不知道日期如何转换为小数。也许你应该拆分你的字符串而不是字符串替换。

也许这个代码给你一些想法的解决方案:

#SELECT FROM_UNIXTIME(REPLACE('41143.646585648', '.', '')); # Does not work due to wrong amount of numbers in string 

SELECT FROM_UNIXTIME(REPLACE('13577.77916', '.', '')); # works