SQL kodum 00 yerine 00 gösteriyor. Bunu nasıl ayarlayabilirim?

Benim için harika çalışan aşağıdaki kod var. SQL'de bir SSIS paketinde kullanıyorum. Sorun şu ki, gece yarısı saat 01.00 arasında, saat 00 olarak gösteriliyor. Benim için çalıştığı için, aşağıdaki kodu mümkün olduğunca kalacağım, ama gerekli ayarlamaları yapmak istiyorum. . Herhangi bir yardım büyük takdir edilecektir!

Teşekkür ederim, John

    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 cevap

Bence bunu basitçe yapabilirsiniz:

SELECT SUBSTRING(CONVERT(CHAR(14), DateTimeField, 100), 13, 2)
3
katma
Ayrıca, bu biraz daha büyük bir kod parçasının (veya göründüğünün) bir parçası olduğu için, tüm partinin CONVERT işlevinin daha iyi kullanılmasıyla değiştirilebileceğini unutmayın.
katma yazar Tom H, kaynak
@John: Evet. Bu kod, sorgunuzda gönderdiğiniz tüm kodların yerini almalıdır.
katma yazar Joe Stefanelli, kaynak
@John CONVERT , stil 100 ile mon dd yyyy hh üretir : miAM (veya PM) . CHAR (14) 'e dönüştürerek, sadece ilk 14 karakterle son bulurum mon dd yyyy hh . Daha sonra SUBSTRING işlevi sadece hh kısmını çeker.
katma yazar Joe Stefanelli, kaynak
Tamam, bunu deneyeceğim! Yani bu kod şu anda kullandığım tüm kodların yerini alacak mı? Çok kısa bir süre sonra nasıl ortaya çıktığını size bildireceğim. Teşekkür ederim!
katma yazar John, kaynak
İyi bir nokta! Bunu bir an test edebileceğim. Eminim yaptığımdan çok daha temiz ve evet, bu daha büyük bir kodun parçasıydı. Teşekkür ederim!
katma yazar John, kaynak
Bu mükemmel çalıştı! Teşekkür ederim! Bu kodlamayı tam olarak anlayamadım, ama bazılarının bunu daha ileriye götürüp, gelecekteki ihtiyaçlar için yapmasını istiyorum. Bunu takdir ediyorum!
katma yazar John, kaynak
Teşekkür ederim! Bu bilmek güzel.
katma yazar John, kaynak

Belirttiğinizden beri Oracle'ı varsayarsak. Genel teknik TO_CHAR işlevini ve 00-23 yerine 01-12 sağlayan bir tarih dönüştürme şablonunu kullanmaktır.

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

select to_char(sysdate, 'HH24:MI:SS') from dual;
0
katma
Üzgünüm, bu SQL 2008
katma yazar John, kaynak