2016-04-06 22 views
0
Böyle bir durumda açıklamada TIME() işlevini kullanmaya çalışıyorum

bir VAKA açıklamada çalışmıyor -00 00:00:00 'durumda değerlendirildiğinde = CURDATE().MySQL TIME() işlevi

bu denerseniz: Böyle, DATE_FORMAT() kullanarak aynı sorguyu çalışırsanız

SELECT CASE WHEN '2016-04-06' = CURDATE() THEN TIME('2016-04-06 07:28:04') ELSE '2016-04-06 07:28:04' END as datetime_column; 

Ben Ayrıca 07:28:04

alıyorum:

SELECT CASE WHEN DATE(datetime_column) = CURDATE() THEN DATE_FORMAT(datetime_column, '%H:%i:%s') ELSE datetime_column END as datetime_column FROM my_table; 

Zamanı da alıyorum.

Herhangi bir fikrin var mı?

Veri Örnek: CASE çıktısı tutarlı veri türüdür böylece

CREATE TABLE `my_table` (
    `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, 
    `inserted_date` datetime NOT NULL, 
    PRIMARY KEY (`name`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 


INSERT INTO `my_table` VALUES ('five','2016-04-06 12:37:07') 
,('four','2016-04-06 12:36:16') 
,('one','2016-04-06 12:30:37') 
,('three','2016-04-06 12:32:05') 
,('two','2016-04-06 12:31:32'); 
+0

bazı örnek veri ile keman oluşturabilir miyim? –

+1

Bu, MySQL gibi bir veya başka bir zaman veya datetime dökümünü zorlaştırıyor gibi geliyor çünkü karışık türde bir çıkış sütunu üretmeye çalışıyor. Sorgu çıktısının ne olmasını istediğinize dair bir örnekle bazı örnek veriler gösterirseniz, muhtemelen MySQL'i bu dizeleri uygun şekilde yayınlamaya yardımcı olabiliriz. –

+3

Farklı sütun türlerini (zaman ve tam tarih) aynı sütunda birleştiremezsiniz: SQL, Excel değildir. Daha fazla hesaplama yapmanız gerekmiyorsa, her şeyi dize atmanız gerekir. –

cevap

0

Sen değerleri dizelere dönüştürmek için CAST() kullanmalıdır.

Bu çalışması gerekir:

SELECT (CASE 
    WHEN DATE(datetime_column) = CURDATE() THEN CAST(TIME(datetime_column) AS CHAR) 
    ELSE CAST(datetime_column AS CHAR) 
    END) as datetime_column 
FROM my_table; 
+0

Teşekkürler Ike Walker! – dquinonez