Менің SQL коды 12 сағат 00 орнына 00 көрсетіледі. Мұны қалай өзгертуге болады?

Маған өте жақсы жұмыс істейтін келесі код бар. Мен оны SQL-де SSIS пакетінде пайдаланамын. Мәселе мынада, бұл түнгі сағат 1-ден бастап 00-ге дейін, сағат 00-ге дейін көрсетіледі. Мен үшін жұмыс істейтіндіктен, келесі кодпен мүмкіндігінше көп болғым келеді, бірақ қажетті түзетуді жасаңыз . Кез келген көмек өте риза болар еді!

Рақмет сізге, Джон

    SELECT     CASE WHEN DATEPART(hour, DateTimeField) < 13 THEN 
    RIGHT(REPLICATE(' ', 2) + CAST(datepart(hour, DateTimeField) AS VARCHAR(2)), 2) 
    ELSE 
    RIGHT(REPLICATE(' ', 2) + CAST(datepart(hour, dateadd(hour, - 12, DateTimeField))
    AS VARCHAR(2)), 2) END
1

2 жауаптар

Менің ойымша, сіз мұны жай ғана орната аласыз:

SELECT SUBSTRING(CONVERT(CHAR(14), DateTimeField, 100), 13, 2)
3
қосылды
Сондай-ақ, бұл кодтың үлкен бөлігінің бөлігі болып табылатындықтан (немесе көрінгенімен), CONVERT функциясын жақсырақ қолдану арқылы бүкіл топтаманы ауыстыруға болатындығын есте сақтаңыз.
қосылды автор Tom H, көзі
@John: Ия. Бұл код сіздің сұрағыңызға қойған барлық кодты ауыстыруы керек.
қосылды автор Joe Stefanelli, көзі
@John CONVERT стилімен 100 mon dd yyyy hh : miAM (немесе PM) . CHAR (14) түрлендіру арқылы, алғашқы 14 таңбалармен аяқталадым mon dd yyyy hh . Содан кейін SUBSTRING функциясы тек hh бөлігін шығарады.
қосылды автор Joe Stefanelli, көзі
Жарайды, мен оны сынап көремін! Сондықтан бұл код қазіргі уақытта пайдаланып жатқан барлық кодты ауыстырады? Мен сіздерге тезірек қалай хабарласатындығын білдіремін. Рақмет сізге!
қосылды автор John, көзі
Жақсы нәрсе! Мұны бір сәтте тексере аламын. Бұл, мен оны жасайтын жолдан әлдеқайда таза, және иә, бұл үлкен кодының бөлігі ғана. Рақмет сізге!
қосылды автор John, көзі
Бұл тамаша жұмыс істеді! Рақмет сізге! Мен осы кодтауды толығымен түсінбеймін, бірақ кейбіреулер болашақта осындай қажеттіліктерге қол жеткізу үшін кейбіреулерді қарап отырады. Мен осыны бағалаймын!
қосылды автор John, көзі
Рақмет сізге! Бұл білу пайдалы.
қосылды автор John, көзі

Oracle-ді болжай отырып, сіз белгілеген жоқсыз. Жалпы әдіс - TO_CHAR функциясын және 00-23 орнына 01-12 мүмкіндік беретін күнді түрлендіру үлгісін пайдалану.

select to_char(sysdate, 'HH:MI:SS AM') from dual;

select to_char(sysdate, 'HH24:MI:SS') from dual;
0
қосылды
Кешіріңіз, бұл SQL 2008
қосылды автор John, көзі