একটি টাইমস্ট্যাম্পের তারিখ থেকে 1 দিন বাদে


98

আমি পোস্টগ্রিস্কল-এর জন্য ডেটাগ্রিপ ব্যবহার করছি। টাইমস্ট্যাম্প ফর্ম্যাটে একটি তারিখের ক্ষেত্র সহ আমার একটি টেবিল রয়েছে (ex: 2016-11-01 00:00:00)। আমি সক্ষম হতে চাই:

  1. 1 দিন বিয়োগ করতে গাণিতিক অপারেটর প্রয়োগ করুন
  2. আজ-130 দিনের একটি সময় উইন্ডোর উপর ভিত্তি করে এটিকে ফিল্টার করুন
  3. স্ট্যাম্পের এইচএইচ / মিমি / এসএস ছাড়াই এটি প্রদর্শন করুন (2016-10-31)

বর্তমান শুরুর ক্যোয়ারী:

select org_id, count(accounts) as count, ((date_at) - 1) as dateat 
from sourcetable 
where  date_at <= now() - 130
group by org_id, dateat

((date_at)-1)লাইন 1 ফলাফলে উপর দফা:

[42883] ত্রুটি: অপারেটর উপস্থিত নেই: সময় অঞ্চল ছাড়া টাইমস্ট্যাম্প - পূর্ণসংখ্যার ইঙ্গিত: কোনও অপারেটর প্রদত্ত নাম এবং যুক্তির ধরণের (গুলি) এর সাথে মেলে না। আপনার স্পষ্টত ধরণের ক্যাসেট যুক্ত করার প্রয়োজন হতে পারে। অবস্থান: 69

now()দফা একটি অনুরূপ বার্তা spawns:

[42883] ত্রুটি: অপারেটরটির অস্তিত্ব নেই: সময় অঞ্চল - পূর্ণসংখ্যার সাথে টাইমস্ট্যাম্প: কোনও অপারেটর প্রদত্ত নাম এবং যুক্তির ধরণের (গুলি) এর সাথে মেলে না। আপনার স্পষ্টত ধরণের ক্যাসেট যুক্ত করার প্রয়োজন হতে পারে। অবস্থান: ...

কাস্ট টাইপ করার জন্য অনলাইন গাইড এককভাবে অসহায় lp ইনপুট প্রশংসা করা হয়।

উত্তর:


226

এটি INTERVALটাইপ ব্যবহার করুন । যেমন:

--yesterday
SELECT NOW() - INTERVAL '1 DAY';

--Unrelated to the question, but PostgreSQL also supports some shortcuts:
SELECT 'yesterday'::TIMESTAMP, 'tomorrow'::TIMESTAMP, 'allballs'::TIME;

তারপরে আপনি আপনার ক্যোয়ারিতে নিম্নলিখিতগুলি করতে পারেন:

SELECT 
    org_id,
    count(accounts) AS COUNT,
    ((date_at) - INTERVAL '1 DAY') AS dateat
FROM 
    sourcetable
WHERE 
    date_at <= now() - INTERVAL '130 DAYS'
GROUP BY 
    org_id,
    dateat;


পরামর্শ

টিপ ঘ

আপনি একাধিক অপারেশন সংযোজন করতে পারেন। উদাহরণস্বরূপ: চলতি মাসের শেষ দিনটি কীভাবে পাবেন?

SELECT date_trunc('MONTH', CURRENT_DATE) + INTERVAL '1 MONTH - 1 DAY';

টিপ 2

আপনি make_intervalরানটাইমে এটি তৈরি করার সময় দরকারী (ফাংশন ব্যবহার করে না) কার্যকর ফাংশন ব্যবহার করে একটি বিরতিও তৈরি করতে পারেন :

SELECT make_interval(days => 10 + 2);
SELECT make_interval(days => 1, hours => 2);
SELECT make_interval(0, 1, 0, 5, 0, 0, 0.0);


অধিক তথ্য:

তারিখ / সময় ফাংশন এবং অপারেটর

ডেটাটাইপ-ডেটটাইম (বিশেষ মান)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.