我收到了一個查詢,它返回一些hh:ss時間值。然而問題是它以PM/AM格式返回,而它需要24小時格式。我無法更改全局語言設置,因爲此24小時時間設置是查詢特定的。在單個t-sql中設置hh:mm到24小時格式查詢 - SQL Server 2012
我想知道如何解決這個問題? 我現在得到的查詢如下:
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小時內返回莊園(在查詢結果中)。
使用'CONVERT(VARCHAR(5),dbo.WorkOrder.WBTravelArrival,108)'得到了正確的結果。雖然仍然想知道爲什麼在一個領域得到正確的價值觀,而在其他領域。 – Nicolas