将存储为varchar的十进制转换为datetime

时间:2013-01-10 00:02:48

标签: mysql datetime varchar

我继承了一个日期列类型为Varchar的MySQL数据库。

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

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

2 个答案:

答案 0 :(得分:0)

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

如果您有一行知道实际日期和存储值,您可以通过减法轻松确定零日期。

答案 1 :(得分: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