Tüm Ürünler
Search
Belge Merkezi

MaxCompute:TRUNC_TIME

Son Güncelleme:Oct 04, 2026

TRUNC_TIME, bir tarih veya saat değerini belirtilen zaman birimine göre kırpar ve STRING türünde döndürür.

Söz dizimi

STRING TRUNC_TIME(DATE|DATETIME|TIMESTAMP|TIMESTAMP_NTZ <date>, STRING <date_part>)

-- Returns 2025-06.
SELECT TRUNC_TIME(DATETIME '2025-06-10 14:20:30', 'month');

Parametreler

date

Zorunludur. Kırpılacak tarih veya zaman damgasıdır. Kabul edilen türler: DATE, DATETIME, TIMESTAMP, TIMESTAMP_NTZ.

Veri türü sürüm 1,0 kapsamında, date parametresi ayrıca DATETIME biçiminde (örneğin yyyy-mm-dd hh:mi:ss, 2025-07-21 00:00:00 gibi) bir STRING değeri kabul eder. Hesaplama yapılmadan önce bu değer örtülü olarak DATETIME türüne dönüştürülür.

date_part

Zorunludur. Kırpma işleminin uygulanacağı zaman birimidir. Büyük/küçük harfe duyarlı olmayan bir STRING sabiti olmalıdır.


Değer


Kırpılan sınır


Çıktı biçimi


year


Yıl sınırı — ay, gün ve saat bileşenlerini atar


yyyy


month


Ay sınırı — gün ve saat bileşenlerini atar


yyyy-mm


day


Gün sınırı — saat bileşenini atar


yyyy-mm-dd


hour


Saat sınırı — dakika ve saniye bileşenlerini atar


yyyy-mm-dd hh:mm:ss

Dönüş değeri

Her zaman bir STRING döndürür. Çıktı biçimi, yukarıdaki tabloda gösterildiği gibi date_part parametresine bağlıdır.

Giriş türünü koruyan işlevlerin aksine, TRUNC_TIME girişi DATE, DATETIME, TIMESTAMP veya TIMESTAMP_NTZ olup olmadığına bakmaksızın her zaman STRING döndürür.

Kullanım notları

Saat dilimiyle ilgili türler için saat dilimi dönüşümü

DATETIME ve TIMESTAMP gibi saat dilimiyle ilgili veri türleri için TRUNC_TIME önce yerel saati UTC'ye dönüştürür, ardından date_part parametresine göre kırpma işlemini uygular ve sonucu STRING olarak döndürür. Bu nedenle çıktı tarihi yerel tarihten farklı olabilir.

Örneğin, UTC+8 saat dilimindeki DATETIME '2025-06-03 07:15:08' değeri, UTC'de 2025-06-02 23:15:08 olarak ifade edilir. day birimine kırpıldığında sonuç 2025-06-03 değil, 2025-06-02 olur.

Kırpma ve ayıklama arasındaki fark

Kırpma işlemi ayıklama ile aynı değildir. TRUNC_TIME, bir zaman damgasını aşağıya doğru bir zaman sınırına yuvarlar ve STRING döndürür. Yıl veya ay numarası gibi bir bileşeni tamsayı olarak ayıklamak için tarih ayıklama işlevlerini kullanın. Daha fazla bilgi için bkz. Tarih işlevleri.

Hata durumları

  • date parametresi desteklenen türlerden (DATE, DATETIME, TIMESTAMP, TIMESTAMP_NTZ) biri değilse hata döndürülür.

  • date_part parametresi NULL ise hata döndürülür.

Örnekler

DATETIME girişi

Oturum saat dilimi UTC+8'dir (Asia/Shanghai). Giriş değeri olan DATETIME '2025-06-03 07:15:08', kırpma işleminden önce UTC'ye 2025-06-02 23:15:08 olarak dönüştürülür.

SET odps.sql.timezone=Asia/Shanghai;

SELECT
    TRUNC_TIME(DATETIME '2025-06-03 07:15:08', 'year')  AS truncated_to_year,
    TRUNC_TIME(DATETIME '2025-06-03 07:15:08', 'month') AS truncated_to_month,
    TRUNC_TIME(DATETIME '2025-06-03 07:15:08', 'day')   AS truncated_to_day,
    TRUNC_TIME(DATETIME '2025-06-03 07:15:08', 'hour')  AS truncated_to_hour;

-- Result:
+--------------------+--------------------+--------------------+---------------------+
| truncated_to_year  | truncated_to_month | truncated_to_day   | truncated_to_hour   |
+--------------------+--------------------+--------------------+---------------------+
| 2025               | 2025-06            | 2025-06-02         | 2025-06-02 23:00:00 |
+--------------------+--------------------+--------------------+---------------------+

DATE girişi

SELECT
    TRUNC_TIME(DATE '2025-06-10', 'year')  AS truncated_to_year,
    TRUNC_TIME(DATE '2025-06-10', 'month') AS truncated_to_month,
    TRUNC_TIME(DATE '2025-06-10', 'day')   AS truncated_to_day;

-- Result:
+--------------------+--------------------+------------------+
| truncated_to_year  | truncated_to_month | truncated_to_day |
+--------------------+--------------------+------------------+
| 2025               | 2025-06            | 2025-06-10       |
+--------------------+--------------------+------------------+

STRING girişi (yalnızca MaxCompute V1.0 veri türü sürümü)

Giriş olarak STRING değeri kullanmak için veri türü sürümünü V1.0 olarak ayarlayın. Dize örtülü olarak DATETIME türüne dönüştürülür ve kırpma işleminden önce UTC'ye çevrilir.

-- Set the time zone to UTC+8.
SET odps.sql.timezone=Asia/Shanghai;
-- Set the data type edition to V1.0 to allow implicit STRING-to-DATETIME conversion.
SET odps.sql.type.system.odps2=false;

SELECT TRUNC_TIME('2025-06-03 15:30:30', 'hour');

-- Result (local time 15:30 UTC+8 converts to 07:00 UTC, then truncated to hour):
+---------------------+
| _c0                 |
+---------------------+
| 2025-06-03 07:00:00 |
+---------------------+

İlgili konular

İlgili tarih hesaplama ve dönüşüm işlevleri için bkz. Tarih işlevleri.