在SQL查询中标准化显示日期时间

问题描述 投票:0回答:1

当我在SQL Server中查询时,我发现datetime在以下各列中以不同的格式显示

a.BATCHREG_TM1, a.BATCHREG_TM2, a.BATCHREG_TM3, a.BATCHREG_TM4, a.BATCHREG_TM5,
a.BATCHREG_TM6, a.BATCHREG_TM7, a.BATCHREG_TM8, a.BATCHREG_TM9, a.BATCHREG_TM10,
a.REG_TM, a.REWORK_TM,

要求:

  1. 以DD / MM / YYYY HH:MM:SS一种格式显示
  2. 以替代名称显示塔的燃料和发动机等的值

示例:如果在燃料中为'U',则显示为柴油,如果为'G',则显示为汽油。

SELECT 
    a.DEVICE_ID, a.MES_SEQ, a.BODY_NO, a.STN_NM,
    c.LINE_CD, a.[SHIFT], a.REG_TM, a.REWORK_TM, a.FIRST_STATUS,
    CAST(TOR_VALUE1 AS float) / 100 AS TOR_VALUE1,
    CAST(TOR_VALUE2 AS float) / 100 AS TOR_VALUE2,
    CAST(TOR_VALUE3 AS float) / 100 AS TOR_VALUE3,
    CAST(TOR_VALUE4 AS float) / 100 AS TOR_VALUE4,
    CAST(TOR_VALUE5 AS float) / 100 AS TOR_VALUE5,
    CAST(TOR_VALUE6 AS float) / 100 AS TOR_VALUE6,
    CAST(TOR_VALUE7 AS float) / 100 AS TOR_VALUE7,
    CAST(TOR_VALUE8 AS float) / 100 AS TOR_VALUE8,
    CAST(TOR_VALUE9 AS float) / 100 AS TOR_VALUE9,
    CAST(TOR_VALUE10 AS float) / 100 AS TOR_VALUE10,
    CONVERT(INT, ANG_VALUE1) AS ANG_VALUE1,
    CONVERT(INT, ANG_VALUE2) AS ANG_VALUE2,
    CONVERT(INT, ANG_VALUE3) AS ANG_VALUE3,
    CONVERT(INT, ANG_VALUE4) AS ANG_VALUE4,
    CONVERT(INT, ANG_VALUE5) AS ANG_VALUE5,
    CONVERT(INT, ANG_VALUE6) AS ANG_VALUE6,
    CONVERT(INT, ANG_VALUE7) AS ANG_VALUE7,
    CONVERT(INT, ANG_VALUE8) AS ANG_VALUE8,
    CONVERT(INT, ANG_VALUE9) AS ANG_VALUE9,
    CONVERT(INT, ANG_VALUE10) AS ANG_VALUE10,
    a.BATCHREG_TM1,a.BATCHREG_TM2,a.BATCHREG_TM3,a.BATCHREG_TM4,a.BATCHREG_TM5,
    a.BATCHREG_TM6,a.BATCHREG_TM7,a.BATCHREG_TM8,a.BATCHREG_TM9,a.BATCHREG_TM10,
    a.BATCH_STATUS,a.TOTAL_STATUS,
    a.REWORK_STATUS,a.REWORK_JOBFLAG,a.PLANT,a.SCAN_CHK,a.TOT_BATCH_NUM,
    a.VIEWFLAG,a.TOOLSNETCHK,a.JOB_NUM,a.REWORKJOB_NUM,c.LH_RH,
    c.DEVICE_STATUS, c.USE_219_CHK
    [MODEL], [DRIVE],[BODY],[TRANSMISSION],[FUEL],[ENGINE],[BRAKESYSTEM],[AIRCON],[REGION]
FROM 
    [C].[dbo].[NUT] a
LEFT JOIN 
    [C].[dbo].[IF_ORDER] b ON a.body_no = b.body_no
LEFT JOIN 
    [C.[dbo].[REG] c ON a.device_id = c.device_id
OUTER APPLY 
    (VALUES (
       SUBSTRING(b.[spec219], 2, 1),
       SUBSTRING(b.[spec219], 3, 1),
       SUBSTRING(b.[spec219], 4, 1),
       SUBSTRING(b.[spec219], 7, 1),
       SUBSTRING(b.[spec219], 8, 1),
       SUBSTRING(b.[spec219], 9, 1),
       SUBSTRING(b.[spec219], 13, 1),
       SUBSTRING(b.[spec219], 28, 1),
    SUBSTRING(b.[spec219], 218, 1)
)) v ([MODEL], [DRIVE],[BODY],[TRANSMISSION],[FUEL],[ENGINE],[BRAKESYSTEM],[AIRCON],[REGION])
WHERE 
    a.reg_tm >= '20200320000000' AND a.reg_tm <= '20200320015959'
ORDER BY 
    a.reg_tm

我尝试使用此代码:

case 
   when isnumeric(left(a.BATCHREG_TM1,4)) = 1 then cast(a.BATCHREG_TM1 as date) 
   when len(a.BATCHREG_TM1) = 10 then convert(date, a.BATCHREG_TM1, 103) 
   when len(a.BATCHREG_TM1) = 8 then convert(date, a.BATCHREG_TM1, 3) 
   when charindex('/',a.BATCHREG_TM1) = 0 and isnumeric(a.BATCHREG_TM1) = 0 then convert(date, a.BATCHREG_TM1, 106) 
end as [date]
.----------------.-----------.---------------------.---------------------.--------------.--------------.--------------.------.--------.
|     REG_TM     | REWORK_TM |    BATCHREG_TM1     |    BATCHREG_TM2     | BATCHREG_TM3 | BATCHREG_TM4 | BATCHREG_TM5 | FUEL | ENGINE |
:----------------+-----------+---------------------+---------------------+--------------+--------------+--------------+------+--------:
| 20200320000001 | NULL      | 2020-03-20:00:00:01 | NULL                | NULL         | NULL         | NULL         | U    | J      |
:----------------+-----------+---------------------+---------------------+--------------+--------------+--------------+------+--------:
| 20200320000001 | NULL      | 20200319235441      | 20200319235443      | NULL         | NULL         | NULL         | U    | J      |
:----------------+-----------+---------------------+---------------------+--------------+--------------+--------------+------+--------:
| 20200320000002 | NULL      | 2020-03-20:00:00:03 | NULL                | NULL         | NULL         | NULL         | G    | Z      |
:----------------+-----------+---------------------+---------------------+--------------+--------------+--------------+------+--------:
| 20200320000002 | NULL      | 2020-03-19:23:59:57 | 2020-03-20:00:00:01 | NULL         | NULL         | NULL         | U    | J      |
:----------------+-----------+---------------------+---------------------+--------------+--------------+--------------+------+--------:
| 20200320000003 | NULL      | 2020-03-20:00:00:00 | 2020-03-20:00:00:02 | NULL         | NULL         | NULL         | U    | J      |
'----------------'-----------'---------------------'---------------------'--------------'--------------'--------------'------'--------'
sql-server datetime-format
1个回答
0
投票

就像我提到的,您需要在此处修复您的设计;这是only

© www.soinside.com 2019 - 2024. All rights reserved.