2010-03-13 26 views
26

MySQL içinde DATETIME saniyede değerini nasıl alacağımı (googling, read mysql reference manual) öğrenemedim.MYSQL - datetime için saniye

Veri gününden saniye ayıklamak değil, saniyeler içinde dönüştürmek istemiyorum.

select UNIX_TIMESTAMP(your_datetime_field) 
from your_table 
where ... 

:

cevap

27

, TIMESTAMPDIFF kullanın: datetime_expr1 ve datetime_expr2 tarih veya tarih saat olan

TIMESTAMPDIFF (birim, datetime_expr1, datetime_expr2)

İade datetime_expr2 – datetime_expr1, ifade. Bir ifade, bir tarih ve diğeri detetime olabilir; Bir tarih değeri, gerektiğinde '00: 00: 00' zaman parçasına sahip bir datetime olarak kabul edilir. Sonuç birimi (bir tamsayı) birim argümanı tarafından verilir. Birim için yasal değerler, TIMESTAMPADD() işlevinin açıklamasında listelenenlerle aynıdır.

unit

mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
-> 3
mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
-> -1
mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
-> 128885

ayrıca yorumların birinde istedi budur HOUR olabilir.

+0

Üzgünüz, ama bütün DATETIME hakkında soru soruyorum :( – Mike

+0

@ Mike: Güncellenmiş cevabımı görün –

+0

sweet :) Cevabını doğru olanı işaretliyorum :) thank you – Mike

34

tarafından ise "saniye dönüştürmek" mı demek (1970-01-01 beri saniye yani sayısı) "bir UNIX Timestamp-dönüştürme", o zaman UNIX_TIMESTAMP fonksiyonunu kullanabilirsiniz
Ve eksiksizlik için, bir Unix Zaman Damgası'ndan bir datetime dönüştürmek için FROM_UNIXTIME işlevini kullanabilirsiniz. Eğer DATETIME değerlere arasındaki farkı olmasını istiyorsanız

+0

iyi ve HOURS'ta iki zaman arasındaki FARKI istediğimde, benzer bir şey kullanmalı mıyım? : seçme (unix_timestamp ('2010-01-02 18:00:00') - unix_timestamp ('2010-01-01 16:00:00'))/60/60; – Mike

+0

TIMESTAMPDIFF işlevinin hile yapması gerektiğini varsayalım: istenen birimin belirtilmesine izin verir (bkz. Http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timestampdiff) –

+0

Teşekkür ederim, Felix şimdiye kadar timesteampdiff kullanarak önerdi, istediklerimi bu – Mike

2

UNIX_TIMESTAMP işlevi (datetime) 1-Ocak-1970 0000 UTC'den bu yana geçen saniye sayısı olan unix zamanını döndürür. Yani ne gerek ama ben tarih dönüştürmek mysql

TO_SECONDS (tarih burada gider) yöntemi kullanılmıştır 2037

2

için.0 Eğer mysql için önceki sürümlerinde DATETIME tip

6

Kullanım TIME_TO_SEC olmalıdır to_seconds()

TO_SECONDS(FIELD_NAME) 

FIELD_NAME kullanabilirsiniz

SEÇ TIME_TO_SEC Ben kendi sorgu oluşturduk

0

FROM tablo (zaman sütun) Sorununuz için:

select (hour(*colname*)*3600 + minute(*colname*)*60 + second(*colname*)) 
from widgets 
where id=1; 
  • kullanın id=1 Belirli bir satır almak varsa.
  • Çıkış, saniye cinsinden olacaktır.
+0

Bu soru uzun zaman önce çoktan cevaplandırıldı ve kabul edilen cevap, sadece saat ve dakikalarla değil, günlerle de ilgileniyor. OP, bir yorumda, iki dak zaman arasındaki farkı saat cinsinden hesaplamak istediğini açıkladı. –