我得到一个返回一些hh:ss时间值的查询。然而问题是它以PM / AM格式返回它,而它需要是24小时格式。我无法更改全局语言设置,因为此24小时时间设置是特定于查询的。
我想知道如何解决这个问题? 我现在得到的查询如下:
SELECT
dbo.qryMPDisplayPre.Datum, dbo.qryMPDisplayPre.Relatie,
dbo.qryMPDisplayPre.[Order], dbo.qryMPDisplayPre.Status,
dbo.WorkOrder.DeviceID, dbo.Relaties.RelatieNaam AS Monteur,
dbo.Orders.Omschrijving AS OrderOmschrijving,
Format(dbo.WorkOrder.WBTravelDeparture, 'hh:mm') AS TravelDeparture,
Format(dbo.WorkOrder.WBTravelArrival, 'hh:mm') AS TravelArrival,
Format(dbo.WorkOrder.WBWorkArrival, 'hh:mm') AS WorkArrival,
Format(dbo.WorkOrder.WBWorkDeparture, 'hh:mm') AS WorkDeparture,
(CASE WHEN WorkOrder.[WBtravelhours] IS NULL
THEN 0 ELSE (CAST(WorkOrder.[WBTravelHours] * 100.0 / 100.0 AS DECIMAL(30, 2))) END) AS TravelHours,
(CASE WHEN WorkOrder.[wbworkhours] IS NULL
THEN 0 ELSE (CAST(WorkOrder.[WBWorkHours] * 100.0 / 100.0 AS DECIMAL(30, 2))) END) AS WorkHours,
dbo.qryWBMontageGeboekt.Geboekt, dbo.Orders.OpdAdres,
dbo.Orders.OpdPC, dbo.Orders.OpdPlaats,
LEFT(dbo.Orders.Omschrijving, 9) AS Expr1
FROM
dbo.qryWBMontageGeboekt
RIGHT OUTER JOIN
dbo.Orders
RIGHT OUTER JOIN
dbo.Relaties
RIGHT OUTER JOIN
dbo.WorkOrder
RIGHT OUTER JOIN
dbo.qryMPDisplayPre ON dbo.WorkOrder.WONummer = dbo.qryMPDisplayPre.[Order]
AND dbo.WorkOrder.WOStatus = dbo.qryMPDisplayPre.Status
AND dbo.WorkOrder.WOAssignmentDate = dbo.qryMPDisplayPre.Datum
ON dbo.Relaties.RelatieNummer = dbo.qryMPDisplayPre.Relatie
ON dbo.Orders.Nummer = dbo.qryMPDisplayPre.[Order]
ON dbo.qryWBMontageGeboekt.Datum = dbo.qryMPDisplayPre.Datum
AND dbo.qryWBMontageGeboekt.Relatie = dbo.qryMPDisplayPre.Relatie
AND dbo.qryWBMontageGeboekt.[Order] = dbo.qryMPDisplayPre.[Order]
WHERE
(dbo.qryMPDisplayPre.Datum > '11/1/2012')
AND (dbo.qryMPDisplayPre.Status <> 0)
有点奇怪,因为WorkArrival
中的值以24小时格式正确显示。虽然TravelDeparture
,TravelArrival
和WorkDeparture
中的值不是,但它们的格式与WorkArrival
格式相同。
所以这让我相信它们被取出的值,WorkOrder
表有问题。虽然这个表包含24小时的日期时间,但它们都是相同的(所以这不是问题)。
请在此处查看获取值的workorder
表:
如您所见,这是所有24小时HH:MM值的日期。
现在,您可以在下面看到查询结果及其PM / AM格式的时间值:
正如您所看到的,查询结果非常奇怪。似乎WorkArrival
字段返回其值正确,但其他字段不正确。同样奇怪的是,字段TravelDeparture
正确地返回了一些值(2个顶部值),但其他字段不正确..
任何线索如何发生这种情况,以及如何让值在24小时内恢复(在查询结果中)。
答案 0 :(得分:2)
在你的例子中,它们都应该是12小时格式,我认为没有理由不是这种情况。 12小时的格式是'hh',你在所有地方都使用它。
这是您的原始查询吗?如果没有,请检查大小写的格式字符串。 24小时的格式恰好是'HH'(大写而不是小写是唯一的区别)。