Sql server 在SQL Server中将短整型设置为时间格式

Sql server 在SQL Server中将短整型设置为时间格式,sql-server,sql-server-2005,Sql Server,Sql Server 2005,我有一个时间列显示为int800将是08:00am,1300将是1:00pm 如何格式化int,使其显示为12小时时间,例如1:13 pm 我正在使用SQL Server 谢谢您可以执行以下操作以获得所需的结果。取材于 将整数转换为表示层并处理格式(即AM/PM): DECLARE @Time INTEGER = 800; SELECT -- convert datetime to hh:mm:ss CONVERT(VARCHAR, -- cast hh:mm to dateti

我有一个时间列显示为
int
<代码>800将是
08:00am
1300
将是
1:00pm

如何格式化
int
,使其显示为12小时时间,例如
1:13 pm

我正在使用SQL Server


谢谢

您可以执行以下操作以获得所需的结果。取材于

将整数转换为表示层并处理格式(即AM/PM):

DECLARE @Time INTEGER = 800;
SELECT
-- convert datetime to hh:mm:ss
CONVERT(VARCHAR,
        -- cast hh:mm to datetime
        CAST(-- insert semicolon to get hh:mm format
             STUFF(-- convert integer to string and pad with zeroes
                   RIGHT(REPLICATE('0', 4) + CAST(@Time AS VARCHAR), 4),
                   3, 0, ':')
        AS DATETIME),
        108);

SELECT @Time = 1300;
SELECT CONVERT(VARCHAR, CAST(STUFF(RIGHT(REPLICATE('0', 4) + CAST(@Time AS VARCHAR), 4), 3, 0, ':') AS DATETIME), 108);

从临时表中选择的示例:

CREATE TABLE #Time ( TimeValue INTEGER );
INSERT INTO #Time VALUES (800);
INSERT INTO #Time VALUES (1300);

SELECT CONVERT(VARCHAR,
               CAST(STUFF(RIGHT(REPLICATE('0', 4) + CAST(TimeValue AS VARCHAR), 4),
                          3, 0, ':')
                    AS DATETIME), 108) AS Time
FROM #Time;
DROP TABLE #Time;

你到底想要什么样的输出?通常,我会将列转换为时间-这不像sql server没有时间数据类型。或者进行文本处理客户端。您使用的是哪个版本?9.00.4035.00 SP3标准版我不知道我的列值在这个等式中起到了什么作用。请你再解释一下好吗?@marc_s我总是混淆2005年和2008年的
时间
…更新。@Frantumn您的列名将替换上述代码中的
@TIME
变量。更新了从临时表中选择的示例。
CREATE TABLE #Time ( TimeValue INTEGER );
INSERT INTO #Time VALUES (800);
INSERT INTO #Time VALUES (1300);

SELECT CONVERT(VARCHAR,
               CAST(STUFF(RIGHT(REPLICATE('0', 4) + CAST(TimeValue AS VARCHAR), 4),
                          3, 0, ':')
                    AS DATETIME), 108) AS Time
FROM #Time;
DROP TABLE #Time;