我有问题将在mysql服务器中保存为INTEGER的数据转换为显示日期时间格式。
我可以使用php访问sql server视图。
日期如:
ROW_NUMBER
我保存如下:75668(整数)
如何格式化
2008-02-29 00:00:00.000
到
75668
?和
date("Y-m-d H:i:s")
这种格式(如75668)?
我在sql server中看到它的完成情况如下:
date("Y-m-d H:i:s")
如何使用php格式化此值?
在结构表中我有:
cast (a.DATA - 36163 as datetime) DATA_W
此列是创建自定义类型。 类型声明是:
[DATA] [dbo].[T_DATA_TYP] NULL,
答案 0 :(得分:1)
这看起来像是MS Excel序列化时间戳的变体,它是自1899年12月31日以来的天数....如果是这种情况,那么你可以使用像这样的函数将它转换为unix时间戳:
function ExcelToUnixTimestamp($dateValue = 0)
{
$excelBaseDate = 25567;
// Perform conversion
if ($dateValue >= 1) {
$utcDays = $dateValue - $excelBaseDate;
$returnValue = round($utcDays * 86400);
if (($returnValue <= PHP_INT_MAX) && ($returnValue >= -PHP_INT_MAX)) {
$returnValue = (integer) $returnValue;
}
} else {
$hours = round($dateValue * 24);
$mins = round($dateValue * 1440) - round($hours * 60);
$secs = round($dateValue * 86400) - round($hours * 3600) - round($mins * 60);
$returnValue = (integer) gmmktime($hours, $mins, $secs);
}
return $returnValue;
}
$weirdTimestamp = 75668;
$unixTimestamp = ExcelToUnixTimestamp($weirdTimestamp - 36163);
echo date('Y-m-d H:i:s', $unixTimestamp);
答案 1 :(得分:0)
此日期为CLARION格式。
用户此: c#:var xx = new DateTime(1800,12,28).AddDays(75668);
在sql中: 声明@SqlDt DATETIME SET @SqlDt = DateAdd(天,75668,'1800-12-28') SELECT @SqlDt AS'SQL日期时间'