SQL日期为INTEGER到PHP日期时间格式

时间:2016-03-09 17:49:35

标签: php sql sql-server date

我有问题将在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,

2 个答案:

答案 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日期时间'