如何减去两个sql datetime字段

时间:2015-04-23 13:54:07

标签: php sql datetime

我在sql数据库上有两个日期时间值,我想减去它们并得到差异数小时。

到目前为止,我创造了三个值。 Deptime和ArrTime作为日期时间值,这是我的问题。

1)第三张表应该是什么价值?它可以是数字,因为我想用它来统计吗?

2)如何减去Deptime和Arrtime并将差异存储在FlightTime中?

提前致谢

4 个答案:

答案 0 :(得分:3)

DATEDIFF可以为您提供时间。

SELECT DATEDIFF(HOUR, Deptime,Arrtime ) AS FlightTime FROM YourTable.

答案 1 :(得分:0)

如果您使用的是tSQL,则可以使用DATEDIFF函数。您可以使用此功能数小时,但如果您需要几小时,那么您可以使用分钟,然后转换回小时。

小时数

SELECT CAST(DATEDIFF(MINUTE, Deptime,Arrtime) AS DECIMAL(30,10))/60 AS FlightTime
FROM TableName

整个小时

SELECT CAST(DATEDIFF(HOUR, Deptime,Arrtime)) AS FlightTime
FROM TableName

由于它是一个计算字段,我只想为计算字段创建一个带有DATEDIFF函数的视图。

答案 2 :(得分:0)

PHP有自己的DateInterval例程,可以提供比在SQL中更多的灵活性(和可移植性)。

$datetime1 = new DateTime($DepDate);
$datetime2 = new DateTime($ArrDate);
$FlightTime = $interval->format('%h');

我看着你的进步,看到几个红旗。由于您已接受用户输入并将其插入数据库,you should至少使用prepared, parameterized insert statements

$PiRepSubmissionSqlQuery = '
  INSERT INTO Pireps (
    PID, FLID, DEPID, ARRID, 
    FlightPlan, AircraftType, Fuel, 
    DepDate, ArrDate, FlightTime, 
    Remarks, Server
  ) 
  VALUES (
    ?, ?, ?, ?,
    ?, ?, ?,
    ?, ?, ?,
    ?, ? 
  )
';

// This is just an example - don't forget to check for errors
$sth = mysqli_prepare($mydb, $PiRepSubmissionSqlQuery);
mysqli_stmt_bind_param(
  $sth, 
  'iiiisssssiss', // these should correspond to your SQL datatypes
  $PID, $FLID, $DEPID, $ARRID,
  $FlightPlan, $AircraftType, $Fuel,
  $DepDate, $ArrDate, $FlightTime,
  $Remarks, $Server
);
mysqli_stmt_execute($sth);

答案 3 :(得分:0)

您应该使用mysql函数TIMESTAMPDIFF来区分日期。所以你的查询应该是这样的:

$PiRepSubmissionSqlQuery = "INSERT INTO Pireps (PID, FLID, DEPID, ARRID, FlightPlan, AircraftType ,Fuel ,DepDate ,ArrDate, FlightTime  ,Remarks ,Server) 
                       VALUES ('$PID', '$FLID', '$DEPID', '$ARRID','$FlightPlan' ,'$AircraftType' ,'$Fuel','$DepDate' ,'$ArrDate' ,TIMESTAMPDIFF(HOUR, ArrDate, DepDate), '$Remarks' ,'$Server')";