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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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ı
dateparametresi desteklenen türlerden (DATE,DATETIME,TIMESTAMP,TIMESTAMP_NTZ) biri değilse hata döndürülür.date_partparametresiNULLise 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.