2013-08-01 9 views
25

अब मुझे अपने पुराने प्रश्नों सहित बहुत सारे SO प्रश्न मिल गए हैं, लेकिन जो मैं करने की कोशिश कर रहा हूं उसे 30 दिनों से अधिक पुराना रिकॉर्ड मिलता है लेकिन मेरा टेबल फ़ील्ड है unix_timestamp। अन्य सभी उदाहरण डेटटाइम फ़ील्ड या कुछ का उपयोग करते हैं। कुछ कोशिश की और उन्हें काम पर नहीं मिल सका।एसक्यूएल 30 दिनों से अधिक पुराने सभी रिकॉर्ड प्राप्त करें

यह निश्चित रूप से नीचे काम नहीं करता है। इसके अलावा मैं एक तिथि के बीच की तारीख नहीं चाहता, मैं डेटाबेस में संग्रहीत यूनिक्स टाइमस्टैम्प से 30 दिनों के बाद सभी रिकॉर्ड चाहता हूं। मैं निष्क्रिय उपयोगकर्ताओं को छीनने की कोशिश कर रहा हूं।

सरल उदाहरण .. काम नहीं करता है।

SELECT * from profiles WHERE last_login < UNIX_TIMESTAMP(NOW(), INTERVAL 30 DAY) 

और यह

SELECT * from profiles WHERE UNIX_TIMESTAMP(last_login - INTERVAL 30 DAY) 

जटिल तारीख प्रश्नों पर नहीं भी मजबूत करने की कोशिश की। किसी भी मदद की सराहना की है।

हालांकि प्रश्न स्वीकार कर लिया गया था। मुझे प्रश्न को बंद करने वाले खुश लोगों को डुप्लिकेट के रूप में ट्रिगर करना पसंद नहीं है। यह स्पष्ट रूप से डुप्लिकेट नहीं है क्योंकि मैंने नहीं पूछा कि MySQL फ़ंक्शन का विकल्प क्या है। मैंने वास्तव में 30 दिनों से पुराने रिकॉर्ड प्राप्त करने के लिए कहा और वह डुप्लिकेट प्रश्न इसका उत्तर नहीं देता है या मुझे यह भी दिखाता है कि इसे कैसे प्राप्त किया जाए। मुझे लगता है कि लोगों को प्रश्नों को पढ़ने की जरूरत है।

+0

करता Postgresql भी एक UNIX_TIMESTAMP समारोह है? –

+0

यकीन नहीं है .. हो सकता है कि यह क्यों काम नहीं कर रहा है .. lol –

उत्तर

50

की तरह कुछ का प्रयास करें: मैनुअल से

SELECT * from profiles WHERE to_timestamp(last_login) < NOW() - INTERVAL '30 days' 

उद्धरण:

एक एकल तर्क to_timestamp समारोह भी उपलब्ध है; यह एक डबल परिशुद्धता तर्क स्वीकार करता है और यूनिक्स युग (1 980-01-01 00: 00: 00 + 00 से सेकंड) समय क्षेत्र के साथ टाइमस्टैम्प में परिवर्तित होता है। (पूर्णांक यूनिक्स अवधियों को परोक्ष डबल परिशुद्धता के लिए डाले गए।)

+0

मुझे वास्तव में '

+0

मैन्युअल के विशिष्ट भाग, आपके स्रोत के लिए सीधा लिंक प्रदान करना अच्छा होगा। – Relequestual

11

जब तक मैं कुछ नहीं छूटा है, यह बहुत आसान होना चाहिए:

SELECT * FROM profiles WHERE last_login < NOW() - INTERVAL '30 days'; 
+0

नहीं .. जिसके परिणामस्वरूप एक प्रकार कास्ट त्रुटि होती है। –

+0

@Pjack: आह, तो मैंने कुछ याद किया था। 'Last_login' कॉलम का प्रकार क्या है? मैंने माना है कि यह 'टाइमस्टैम्प' था जो स्पष्ट रूप से नहीं है। –

+0

कॉलम एक बड़ा हिस्सा है –

1

कैसे

के बारे में
SELECT * from profiles WHERE last_login < VALUEOFUNIXTIME30DAYSAGO 

या

SELECT * from profiles WHERE last_login < (extract(epoch from now())-2592000) 

इस पोस्ट पर एक नज़र डालें:

https://dba.stackexchange.com/questions/2796/how-do-i-get-the-current-unix-timestamp-from-postgresql

और यह

http://www.epochconverter.com/

+0

धन्यवाद, स्वीकृत उत्तर पर मेरी टिप्पणी देखें। –

संबंधित मुद्दे