एसक्यूएल स्ट्रिंग प्रारूप अद्यतन करें - एसक्यूएल, postgresql

यदि मेरे पास "022417" जैसा मानों वाले डेटाबेस तालिका कॉलम हैं और मैं एक क्वेरी बनाना चाहता हूं जो उन सभी को "02-24-2017" में बदल देता है, तो वह क्वेरी कैसी दिखाई देगी?

मेरे शुरुआती प्रयास ने वाइल्डकार्ड (?) वाक्यविन्यास का उपयोग करने की कोशिश की:

UPDATE b5_adproduct
SET ad_date = replace(ad_date, "______", "__-__-20__");

लेकिन वह असफल रहा।

उत्तर:

जवाब के लिए 3 № 1

आपने एक टिप्पणी में कहा है कि आपके रिकॉर्ड केवल पिछले वर्ष से ही फैले हैं, इसलिए यह उन सभी के लिए काम करना चाहिए:

UPDATE `b5_adproduct` SET `ad_date` = CONCAT(SUBSTRING(`ad_date`, 1, 2), "-", SUBSTRING(`ad_date`, 3, 2), "-20", SUBSTRING(`ad_date`, 5, 2))

साथ ही, सुनिश्चित करें कि फ़ील्ड 6 से अधिक अक्षरों को स्वीकार करता है, बस मामले में, क्योंकि स्ट्रिंग अधिक हो जाएगी

साथ ही, यदि आप बाद में किसी फ़ील्ड को फ़ील्ड को स्विच करने की योजना बना रहे हैं, तो तारीख को YYYY-MM-DD जैसा दिखना होगा ताकि आप इसके लिए निम्न का उपयोग कर सकें:

UPDATE `b5_adproduct` SET `ad_date` = CONCAT("20", SUBSTRING(`ad_date`, 5, 2), "-", SUBSTRING(`ad_date`, 1, 2), "-", SUBSTRING(`ad_date`, 3, 2))

उत्तर № 2 के लिए 1

आप उपयोग कर सकते हैं format() साथ में substr(), उदा।

update b5_adproduct
set ad_date = format(
"%s-%s-20%s",
substr(ad_date, 1, 2),
substr(ad_date, 3, 2),
substr(ad_date, 5, 2))
returning *

id |  ad_date
----+------------
1 | 02-24-2017
(1 row)

आप एक ही समय में मानों को परिवर्तित करने वाले कॉलम के प्रकार को भी बदल सकते हैं, उदा।

alter table b5_adproduct
alter ad_date type date
using make_date(
substr(ad_date, 5, 2)::int+ 2000,
substr(ad_date, 1, 2)::int,
substr(ad_date, 3, 2)::int)
--  make_date(yyyy, mm, dd)

उत्तर № 3 के लिए 1

एक और तरीका यह है कि इसे आसानी से डेट प्रारूप में परिवर्तित करना होगा। यदि आप MySQL का उपयोग करते हैं तो यह होगा:

UPDATE `b5_adproduct`
SET `ad_date` = DATE_FORMAT(STR_TO_DATE(`ad_date`, "%m%d%y"), "%m-%d-%Y");

कहा पे STR_TO_DATE() अपनी स्ट्रिंग को एक तारीख में बदल देता है, और फिर उपयोग करें DATE_FORMAT() प्रदर्शित करने के लिए दिनांक प्रारूप निर्दिष्ट करने के लिए।

यदि आप PostgreSQL का उपयोग कर रहे हैं तो आप इसका उपयोग कर सकते हैं to_date() अपनी स्ट्रिंग को एक तिथि में बदलने के लिए:

to_date("022417", "MMDDYY")

विशेष विवरण: https://www.postgresql.org/docs/9.2/static/functions-formatting.html


जवाब के लिए 0 № 4

ऐसा कुछ कर सकता है (ऊपर दिए गए उत्तर से थोड़ा अलग - बस घोषित चर को अपने स्वयं के तालिका मान से बदलना)

Declare @date nvarchar(10)
Set @date = "122417"

**select @date, substring(@date,1,2) + "-" + substring(@date,3,2) + "-20" + substring(@date,5,2)**

go

रिटर्न:

122417  12-24-2017

संबंधित सवाल
सबसे लोकप्रिय