我的出生日期存储在MySQL数据库中,我需要将其转换为可读日期格式yyyy-mm-dd hh:mm:ss
。我不能使用MySQL的From_Unix函数,因为许多出生日期是在1970年之前,函数返回NULL
。 (即-866138400000,即07/21/1942)
我曾尝试使用刻度线,但也会返回NULL
:
(FROM_DAYS(365 + (req.PATIENTDOB / 864000000000)) + INTERVAL (req.PATIENTDOB % 864000000000) / 10000000 SECOND) AS ptDob
任何进步都将不胜感激。谢谢。
答案 0 :(得分:1)
我不知道你为什么要这么复杂。只需除以1000得到秒而不是微秒,然后从1970-01-01中减去。
mysql > select '1970-01-01' + interval -866138400000/1000 second;
+---------------------------------------------------+
| '1970-01-01' + interval -866138400000/1000 second |
+---------------------------------------------------+
| 1942-07-22 06:00:00 |
+---------------------------------------------------+
1 row in set (0.00 sec)
所以你的查询当然是这样的:
select '1970-01-01' + interval your_column / 1000 second from your_table;
这个查询证明,你的假设,那将是1942-07-21是错误的。 1942-07-22是正确的。
mysql > select timestampdiff(second, '1942-07-21', '1970-01-01');
+---------------------------------------------------+
| timestampdiff(second, '1942-07-21', '1970-01-01') |
+---------------------------------------------------+
| 866246400 |
+---------------------------------------------------+
答案 1 :(得分:0)
在研究负面时代时找到答案。毕竟我能够使用From_Unixtime函数!
select date_format((DATE_ADD(FROM_UNIXTIME(0), interval -866138400000/ 1000 second)),'%Y-%m-%d') as ptdate;
- > " 1942年7月21日"
Reference>的链接在负面时期部分下看