কিভাবে একটি স্ট্রিং ক্ষেত্রকে তারিখ ক্ষেত্রে রূপান্তর করতে হয়


10

আমার পয়েন্টগুলির সাথে একটি স্তর রয়েছে যা মারাত্মক সড়ক দুর্ঘটনার প্রতিনিধিত্ব করে এবং ক্ষেত্রটিতে "তারিখ_14_D" তাদের তারিখ ধারণ করে তবে এর ধরণ স্ট্রিং। আমি এই স্ট্রিং ফিল্ডটিকে তারিখের ক্ষেত্রে রূপান্তর করতে চাই তবে ঠিক আছে বোতামটি নিষ্ক্রিয়। সমস্যা কি? আমি কিউজিস ব্যবহার করি। নীচের ছবি দেখুনএখানে চিত্র বর্ণনা লিখুন


1
আপনি "আরও তথ্য" ক্লিক করলে এটি কী বলে?
ম্যাথিয়াস কুহন

আমি মনে করি যে তারিখের ফর্ম্যাটটি ভুল; কিউজিআইএস 'YYYY-MM-DD' এর মতো কিছু প্রত্যাশা করে।
আর্মোরার

পার্স ত্রুটি: ইভাল ত্রুটি: "% 1" রূপান্তর সম্ভব ছিল না।
ইলিয়াস এম

আমি @ আরমোরার মত ফর্ম্যাটটি রূপান্তরিত করে বলেছিলাম যে আমি এই পদ্ধতিটি পুনরাবৃত্তি করেছি তবে আবার ঠিক আছে বোতামটি নিষ্ক্রিয়।
ইলিয়াস মি

উত্তর:


14

আমি অবাক হয়েছি আমি এর আগে দেখিনি। সম্ভবত আমি পরিষ্কার কিছু উপেক্ষা করছি :)

যদিও আপনি আমার কাছে আলাদা লোকেল ব্যবহার করছেন, আপনি যুক্তরাজ্যে, ডিডি / এমএম / ইয়াহির মতো একই তারিখের ফর্ম্যাটটি ব্যবহার করছেন। আমি কিছুটা আলাদা ত্রুটি পেয়েছি (কিউজিআইএস ২.১16.১ এ) তবে এটি তারিখের ফর্ম্যাটটি পছন্দ করে না।

আপনি এক্সপ্রেশন সম্পাদকের ফাংশন সম্পাদক ট্যাবটিতে একটি অল্প অজগর স্ক্রিপ্ট তৈরি করে এটি পেতে পারেন।

  • এক্সপ্রেশন সম্পাদকটিতে ফাংশন সম্পাদক ট্যাবে যান
  • একটি নতুন ফাংশন তৈরি করুন ("নতুন ফাইল" বোতাম)
  • নিম্নলিখিত কোড উইন্ডোতে পেস্ট করুন। আপনি ইনডেন্টেশন ত্রুটি পেতে পারেন, তাই প্রয়োজন হলে ম্যানুয়ালি স্পেসগুলির সাথে পুনরায় ইনডেন্ট করুন
  • পরিবর্তনগুলি সংরক্ষণ করতে "লোড" বোতামে ক্লিক করুন
  • এক্সপ্রেশন ট্যাবে ফিরে যান
  • পাইথন শিরোনামের নীচে দেখুন, এখন পার্স_ডেট_ডিএম নামে একটি ফাংশন দেখা উচিত

from qgis.core import *
from qgis.gui import *
from PyQt4.QtCore import QDate

@qgsfunction(args="auto", group='Python')
def parse_date_dmy(fromval, feature, parent):
    return QDate.fromString(fromval, 'dd/MM/yyyy')

আপনি যদি QGIS 3 ব্যবহার করেন এবং পাইকিউটি 4 সম্পর্কে একটি ত্রুটি পেয়ে থাকেন তবে পরিবর্তে পাইকিউটি 5 ব্যবহার করুন, অর্থাৎ লাইন 3 এর সাথে প্রতিস্থাপন করুন

...
from PyQt5.QtCore import QDate
...

তারপরে আপনি নিজের ক্ষেত্রের নামটি ব্যবহার করে এমন মত প্রকাশ করতে পারেন: -

parse_date_dmy("mydate") 

সবকিছু ঠিকঠাক থাকলে আপনার এমন কিছু দেখা উচিত ...

এখানে চিত্র বর্ণনা লিখুন


আপনার বিস্তারিত উত্তরের জন্য অনেক ধন্যবাদ। এটা কাজ করেছে. তবে, কিছু তারিখের জন্য, ফলাফলটি শূন্য ছিল। কোন ব্যাখ্যা আছে?
ইলিয়াস এম

1
আপনার বিন্যাসের স্ট্রিং হিসাবে d / M / yyyy চেষ্টা করুন ( কিউটি তারিখের ফর্ম্যাট স্ট্রিং স্পেকটি দেখুন, যদিও এটি একটি Qt5 পৃষ্ঠা হিসাবে নোট করুন)। আমি একক এবং দ্বিগুণ পরিসংখ্যান দিয়ে দিন এবং মাসগুলিতে এটি পরীক্ষা করেছি এবং দেখে মনে হচ্ছে এটি ঠিক আছে। যদি এটি কাজ করে তবে আমি আমার উত্তর আপডেট করব।
স্টিভেন কে

আমি যখন প্রথম এই পদ্ধতিটি চালাই, তখন তারিখের ফর্ম্যাটটি ছিল / ম / ইয়াহে। আমি আবার d / M / yyy ফর্ম্যাট দিয়ে এটি চালানোর চেষ্টা করেছি এবং কিছু রেকর্ডের ফলাফল উপরে উল্লিখিত হিসাবে শূন্য ছিল। এছাড়াও, আমি dd / MM / yyyy ফর্ম্যাটটি দিয়ে এটি চালিয়েছি এবং ফলাফলটি ছিল যে সমস্ত রেকর্ডটি বাতিল ছিল। আমি কি ভুল করেছি?
ইলিয়াস এম

1

বা সহজভাবে ব্যবহার করুন:

to_date( regexp_substr( "MAJ" , '/(\\d+$)' ) || '-' || regexp_substr( "MAJ" , '/(\\d+)/' ) || '-' || regexp_substr( "MAJ" , '^(\\d+)/' ) )

আপনার তারিখ ক্ষেত্র হিসাবে এমএজে সাথে (ডিডি / এমএম / ওয়াইওয়াইওয়াই) With


1

@ স্টিভেন কে-র ক্রিস্টাল সাফ জবাবের কিউজিআইএস 3 এর জন্য একটি আপডেট

আপনি এক্সপ্রেশন সম্পাদকের ফাংশন সম্পাদক ট্যাবটিতে একটি অল্প অজগর স্ক্রিপ্ট তৈরি করে এটি পেতে পারেন।

  • এক্সপ্রেশন সম্পাদকটিতে ফাংশন সম্পাদক ট্যাবে যান
  • একটি নতুন ফাংশন তৈরি করুন ("নতুন ফাইল" বোতাম)
  • নিম্নলিখিত কোড উইন্ডোতে পেস্ট করুন। আপনি ইনডেন্টেশন ত্রুটি পেতে পারেন, তাই প্রয়োজন হলে ম্যানুয়ালি স্পেসগুলির সাথে পুনরায় ইনডেন্ট করুন
  • পরিবর্তনগুলি সংরক্ষণ করতে "লোড" বোতামে ক্লিক করুন
  • এক্সপ্রেশন ট্যাবে ফিরে যান
  • পাইথন শিরোনামের নীচে দেখুন, এখন পার্স_ডেট_ডিএম নামে একটি ফাংশন দেখা উচিত

from qgis.core import *
from qgis.gui import *
from PyQt5.QtCore import QDate

@qgsfunction(args="auto", group='Python')
def parse_date_dmy(fromval, feature, parent):
    return QDate.fromString(fromval, 'dd/MM/yyyy')

তারপরে আপনি নিজের ক্ষেত্রের নামটি ব্যবহার করে এমন মত প্রকাশ করতে পারেন: -

parse_date_dmy("mydate") 

সবকিছু ঠিকঠাক থাকলে আপনার এমন কিছু দেখা উচিত ...

এখানে চিত্র বর্ণনা লিখুন


1

আমি জানি না এটি আগের মতটি কী ছিল 2016, তবে কিউজিআইএস 3.10 হিসাবে, এটি এক্সজিশন সম্পাদক বা ফিল্ড ক্যালকুলেটরের QGIS- এ উপলব্ধ ফাংশনগুলিতে প্রয়োগ করা হয়েছে। ডানদিকের ডকুমেন্টেশন (ক্ষেত্রের ক্যালক কথোপকথনে) আপনাকে এর সমাধান দেয়:

to_date( "MyDateFieldNameWithDatesAsStrings" , 'dd/MM/yyyy' )

(সাদা স্থান alচ্ছিক) এবং "ওকে" চাপুন। আপনার অ্যাট্রিবিউট টেবিলের উপস্থিত একজনের সাথে "ফর্ম্যাট "টি মানিয়ে নিন। উদাহরণস্বরূপ, যদি আপনার তারিখগুলি কিছু দেখতে 07.3.03লাগে তবে এর জন্য সঠিক বিন্যাসটি হবে dd.M.yy*। মূলধনটির প্রতি মনোযোগ দিন, যেহেতু প্রতীকটি m"মিনিট" এবং Mদাঁড়ায় "মাস"।

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