日付列タイプが。のMySQLデータベースを継承しましたVarchar
。
列には10進文字列が含まれています。例:41143.646585648
。
これをDateTime形式に変換するにはどうすればよいですか?
知っておく必要があるのは、元の開発者が値ゼロとして定義した日付だけです。次に、その日付に整数の日数を加算し、小数部分に86400を掛けて秒を取得し、算術演算を実行して時、分、秒を決定するだけです。
実際の日付と保存された値がわかっている行がある場合は、減算によってゼロの日付を簡単に判別できます。
ドットを文字列で置き換えることはできますが、残りの数字の数が UNIX タイムスタンプとしては多すぎます。日付が 10 進数に変換された方法がわかりません。文字列を置き換えるのではなく、文字列を分割する必要があるかもしれません。
おそらく、このコードは解決策のアイデアを提供します:
#SELECT FROM_UNIXTIME(REPLACE('41143.646585648', '.', '')); # Does not work due to wrong amount of numbers in string
SELECT FROM_UNIXTIME(REPLACE('13577.77916', '.', '')); # works