টিএসকিউএল ডেটটাইম ক্ষেত্র থেকে YYYY-MM-DD ফর্ম্যাটে কীভাবে তারিখ পাবেন?


259

আমি কীভাবে এসকিউএল সার্ভার থেকে YYYY-MM-DDফর্ম্যাটে একটি তারিখ পুনরুদ্ধার করব ? এসকিউএল সার্ভার 2000 এবং এর সাথে কাজ করার জন্য আমার এটি দরকার। এসকিউএল সার্ভারে এটি সম্পাদন করার কোনও সহজ উপায় আছে বা আমি ফলাফল সেটটি পুনরুদ্ধার করার পরে এটি প্রোগ্রামিয়ালি রূপান্তর করা আরও সহজ হবে কি?

আমি পড়েছি মাইক্রোসফ্ট টেকনেটে কাস্ট এবং কনভার্ট , তবে আমি যে ফর্ম্যাটটি চাই তা তালিকাভুক্ত নয় এবং তারিখের ফর্ম্যাট পরিবর্তন করা কোনও বিকল্প নয়।


126 এর বিওএল বর্ণনাটি কিছুটা বিভ্রান্তি (কখনই "টি" এর ব্যাখ্যা খুঁজে পায়নি)।
nojetlag

"টি" তারিখটি সময়ের থেকে পৃথক করে। উইকিপিডিয়ায় আইএসও 8601 দেখুন
ক্রুবো

উত্তর:


428
SELECT CONVERT(char(10), GetDate(),126)

আপনি চান না এমন ঘন্টা অংশের ভারচর চপের আকার সীমাবদ্ধ করা।


3
না, তবে কিছু ক্লায়েন্টের নির্দিষ্ট দৈর্ঘ্যের সমস্যা রয়েছে।
gbn

54
YYYYMMDD তে রূপান্তর করার জন্য গুগলে এই পোস্টটি উঠে এসেছে - যাতে এটি হ'ল: কনভার্ট (চর (10), গেটডেট (), 112)
নিলওয়াল্টার

1
এটি আমার পক্ষে কাজ করে না, উপরে ডাব্লু / একটি কোড 112 করেছে। ধন্যবাদ @ নিলওয়াল্টারস
অ্যালেক্সভিপার্ল

4
আউটপুট শৈলীর জন্য পূর্ণসংখ্যার কোডগুলির তালিকা: এমএসডিএন.মাইক্রোসফটকম /en-us/library/ms187928.aspx
বেন ফরাসেন

কোড 126 তারিখের জন্য যেমন YYYY-mm-dd ফর্ম্যাটে জন্মের তারিখের জন্য ভাল: প্যাট_ডব হিসাবে কনভার্ট (চর (10), প্যাট_ডব, 126)
jjwdesign

118
SELECT convert(varchar, getdate(), 100) -- mon dd yyyy hh:mmAM

SELECT convert(varchar, getdate(), 101) -- mm/dd/yyyy – 10/02/2008                  

SELECT convert(varchar, getdate(), 102) -- yyyy.mm.dd – 2008.10.02           

SELECT convert(varchar, getdate(), 103) -- dd/mm/yyyy

SELECT convert(varchar, getdate(), 104) -- dd.mm.yyyy

SELECT convert(varchar, getdate(), 105) -- dd-mm-yyyy

SELECT convert(varchar, getdate(), 106) -- dd mon yyyy

SELECT convert(varchar, getdate(), 107) -- mon dd, yyyy

SELECT convert(varchar, getdate(), 108) -- hh:mm:ss

SELECT convert(varchar, getdate(), 109) -- mon dd yyyy hh:mm:ss:mmmAM (or PM)

SELECT convert(varchar, getdate(), 110) -- mm-dd-yyyy

SELECT convert(varchar, getdate(), 111) -- yyyy/mm/dd

SELECT convert(varchar, getdate(), 112) -- yyyymmdd

SELECT convert(varchar, getdate(), 113) -- dd mon yyyy hh:mm:ss:mmm

SELECT convert(varchar, getdate(), 114) -- hh:mm:ss:mmm(24h)

SELECT convert(varchar, getdate(), 120) -- yyyy-mm-dd hh:mm:ss(24h)

SELECT convert(varchar, getdate(), 121) -- yyyy-mm-dd hh:mm:ss.mmm

SELECT convert(varchar, getdate(), 126) -- yyyy-mm-ddThh:mm:ss.mmm

1
পরিবর্তে 'মিমি / ডি / ইয়ে' কীভাবে পাবেন 'মিমি / ডিডি /
ইয়ে

এটি এখন পর্যন্ত সবচেয়ে সহায়ক উত্তর।
ড্যানিয়েল

109

এসকিউএল সার্ভার ২০১২ দিয়ে শুরু হচ্ছে (মূল প্রশ্নটি 2000 এর জন্য):

SELECT FORMAT(GetDate(), 'yyyy-MM-dd')


ডটনেট স্ট্যান্ডার্ড ফর্ম্যাটগুলি ব্যবহার করে সাম্প্রতিক এসকিউএল সংস্করণগুলিতে তারিখ / সময় করার এটি বুদ্ধিমান নমনীয় উপায়। মিনিট থেকে আলাদা করতে মাস এমএমকে মূলধন মনে রাখবেন। সমস্ত তারিখের সময়ের ফর্ম্যাটগুলি
জিম বার্চ

35

আপনি যে ফর্মটি পরে আছেন তা অনলাইন ডকুমেন্টেশনের বইগুলিতে তালিকাভুক্ত রয়েছে।

http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx

উদাহরণস্বরূপ, নিম্নলিখিত চেষ্টা করুন:

select convert(varchar,getDate(),120)
select convert(varchar(10),getDate(),120)

4
আপনি যদি ডিফল্ট গ্রহণ করেন, তবে এই ক্ষেত্রে, আপনি সময় মানটি পাবেন - 120 ফর্ম্যাটটির পুরো ফর্ম্যাটটি হ'ল 'yyyy-mm-dd hh: mi: ss'। স্পষ্টভাবে দৈর্ঘ্যটি ঘোষণার মাধ্যমে, এটি আপনার মূল নোট - 'yyyy-mm-dd' এ আপনি যে ফর্ম্যাটটি নির্দিষ্ট করেছেন সেটি ছাঁটাই করা হয়।
ডেভ

26

convertবিন্যাস সুনির্দিষ্টভাবে উল্লেখ করা 120 সঙ্গে ফাংশন দিতে হবে বিন্যাস "YYYY-MM-DD hh: mm: SS", তাই আপনি শুধু শুধু তারিখ অংশ পেতে থেকে 10 সময়ের সীমা করতে হবে:

convert(varchar(10), theDate, 120)

যাইহোক, ফর্ম্যাট তারিখগুলি সাধারণত উপস্থাপনা স্তরে ডাটাবেস বা ব্যবসায়ের স্তর না করে আরও ভাল। আপনি যদি ডাটাবেস থেকে ফর্ম্যাট করা তারিখটি ফিরিয়ে দেন তবে ক্লায়েন্ট কোডটি যদি কোনও গণনা করার দরকার হয় তবে তা আবার একটি তারিখে পার্স করতে হবে।

সি # তে উদাহরণ:

theDate.ToString("yyyy-MM-dd")

1
ডাউনটা কেন? আপনি যদি ভুল বলে মনে করেন তবে এটি কী ব্যাখ্যা না করে তবে উত্তরটি উন্নত করতে পারে না।
গুফা

14

YYYYMMDD এর জন্য চেষ্টা করুন

select convert(varchar,getDate(),112)

আমি কেবল এসকিউএল সার্ভার ২০০8 এ পরীক্ষা করেছি।


7

অন্য একটি উপায় ...

CONVERT(varchar, DATEPART(yyyy, @datetime)) + '/' + CONVERT(varchar, DATEPART(mm, @datetime)) + '/' + CONVERT(varchar, DATEPART(dd, @datetime)) 

1
এটি 8/3/2012 হিসাবে 1 ডিজিটের তারিখ তৈরি করবে যদি আপনি 2 ডিজিটের মিমি / ডিডি চান তবে আপনার তারিখগুলি বাম প্যাডের প্রয়োজন। ডানদিকে ('00 '+ কনভার্ট (বার্চর, তারিখ পার্ট (ইয়ি, @ তারিখ সময়)), 2) উদাহরণস্বরূপ
মাইন্ডস্টালার

7

যারা সময়ের অংশটিও চাইবে (আমি করেছি), নিম্নলিখিত স্নিপেট সাহায্য করতে পারে

SELECT convert(varchar, getdate(), 120) -- yyyy-mm-dd hh:mm:ss(24h)
SELECT convert(varchar, getdate(), 121) -- yyyy-mm-dd hh:mm:ss.mmm
SELECT convert(varchar, getdate(), 126) -- yyyy-mm-ddThh:mm:ss.mmm
                              --example -- 2008-10-02T10:52:47.513

6
replace(convert(varchar, getdate(), 111), '/','-')

"কিছু না কাটা" ছাড়াই কৌতুক করবে।


রূপান্তর (বর্ণচর (10) ...) সংস্করণের সাথে যুক্ত "বর্ষ 9999" বাগগুলি এড়াতে আমি এই সংস্করণটিকে পছন্দ করি।
ফ্রান্সিস হুয়াং

6

যদি কেউ অন্য উপায়ে এটি করতে চায় এবং এটি খুঁজে পায়।

select convert(datetime, '12.09.2014', 104)

এটি জার্মান তারিখের বিন্যাসের একটি স্ট্রিংকে একটি ডেটটাইম অবজেক্টে রূপান্তর করে।

কেন 104? এখানে দেখুন: http://msdn.microsoft.com/en-us/library/ms187928.aspx


5

আপনার castালাই এবং রূপান্তর লিঙ্কে, 126 শৈলীটি এভাবে ব্যবহার করুন:

CONVERT (varchar(10), DTvalue, 126)

এটি সময়কে ছিন্ন করে। আপনার yyyy-mm-dd এ থাকা প্রয়োজনের অর্থ এটি অবশ্যই একটি স্ট্রিং ডেটাটাইপ এবং তারিখের সময় হতে হবে।

সত্যি বলতে গেলে, আমি যদি ক্লায়েন্টের সাথে এটি না করতাম তবে যদি না আপনি ভাল কারণ না করেন।


4

আপনি যদি varcharএরপরে আবার পরিবর্তে তারিখ হিসাবে ব্যবহার করতে চান তবে এটিকে আবার রূপান্তর করতে ভুলবেন না:

select convert(datetime,CONVERT(char(10), GetDate(),126))

এটি কি আবার সিস্টেম ডিফল্ট ফর্ম্যাটে রূপান্তরিত করে না?
Ignas Vyšnia

3

আমি নিশ্চিত নই কেন উপরের উত্তরে সরলতম উপায়ে উপেক্ষা / বাদ দেওয়া হয়েছে:

SELECT FORMAT(GetDate(),'yyyy-MM-dd');--= 2020-01-02

SELECT FORMAT(GetDate(),'dd MMM yyyy HH:mm:ss');-- = 02 Jan 2020 08:08:08

আমি দ্বিতীয়টি পছন্দ করি কারণ আপনি যে কোনও ভাষায় কথা বলবেন আপনি বুঝতে পারবেন এটি কোন তারিখের!

এছাড়াও এসকিউএল সার্ভার যখন আপনার কম্পিউটারে কোন আঞ্চলিক ফর্ম্যাট নির্ধারিত না করে আপনার সংরক্ষণের পদ্ধতিতে প্রেরণ করেন তখন সর্বদা এটি "বোঝে" - আমি সর্বদা পুরো বছর (ইয়ে), মাসের নাম (এমএমএম) এবং 24 ঘন্টা বিন্যাস (মূলধন এইচএইচ) ব্যবহার করি আমার প্রোগ্রামিং ঘন্টা জন্য।


2

SELECT CONVERT(NVARCHAR(20), GETDATE(), 23)


1
এনভিচারার (20) কেন ব্যবহার করবেন? সেখানে কি বিশেষ চরিত্র থাকতে পারে?
কেএম

আমি ইউনিকোড ব্যবহার করার জন্য prever। আমার প্রকল্পগুলির মোস আন্তর্জাতিক ;-)
দিমিত্রি কাউমিনভ

2

আপনি ব্যবহার করতে পারেন। এটি নতুন ডেটাটাইপ ব্যবহার করে DATE। পূর্ববর্তী সমস্ত সংস্করণে কাজ নাও করতে পারে, তবে পরবর্তী সংস্করণে ব্যবহার করতে ব্যাপকভাবে সরলীকৃত হয়েছে।

SELECT CAST(getdate() AS DATE)
SELECT LEFT(CAST(getdate() AS DATE), 7)


1
SELECT Code,Description FROM TABLE

-- This will Include only date part of 14th March 2010. Any date with date companents will not be considered.
WHERE ID= 1 AND FromDate >= CONVERT(DATETIME, '2010-02-14', 126) AND ToDate <= DATEADD(dd, 1, CONVERT(DATETIME, '2010-03-14', 126))

-- This will Include the whole day of 14th March 2010
--WHERE ID= 1 AND FromDate >= CONVERT(DATETIME, '2010-02-14', 126) AND ToDate < DATEADD(dd, 1, CONVERT(DATETIME, '2010-03-14', 126))

1

এসকিউএল সার্ভার ২০০৮ থেকে আপনি এটি করতে পারেন: CONVERT(date,getdate())


1

কোনও অদ্ভুত কাজ করা অপ্রয়োজনীয় বলে মনে হচ্ছে, যদি আপনি চান যে আপনার তারিখটি স্ল্যাশ দ্বারা পৃথক করা হোক। ব্যাকস্ল্যাশ দিয়ে এড়িয়ে চলুন। অন্যথায় আপনি একটি বিন্দু দিয়ে শেষ হবে।

SELECT FORMAT(GETDATE(),'yyyy\/MM');  

এসকিউএল সার্ভার 2016 এ পরীক্ষা করা হয়েছে


0

রূপান্তর / castালাই ফাংশনগুলির জন্য প্রতিটি ক্ষেত্রে CASE বিবৃতি ব্যবহার করা আমার পক্ষে সর্বদা কাজ করে:

দয়া করে আপনার টেবিলের নাম সহ টেবিল এক্সএক্সএক্সএক্সএক্সএইচএক্স প্রতিস্থাপন করুন এবং সেই টেবিলে আপনার ডেটটাইম ক্ষেত্রের নাম সহ তারিখ_ড্যাট ইস্যু করুন:

SELECT  issueDate_dat, CONVERT(varchar, DATEPART(yyyy, issuedate_dat))  AS issueDateYYYY
, CASE WHEN (len(CONVERT(varchar, DATEPART(mm, issuedate_dat))) < 2) THEN '0' +CONVERT(varchar, DATEPART(mm, issuedate_dat)) ELSE CONVERT(varchar, DATEPART(mm, issuedate_dat)) END AS  issueDateMM
, CASE WHEN (len(CONVERT(varchar, DATEPART(dd, issuedate_dat))) <2) THEN '0' +CONVERT(varchar, DATEPART(dd, issuedate_dat)) ELSE CONVERT(varchar, DATEPART(dd, issuedate_dat)) END AS issueDateDD
FROM            tableXXXXY

আশা করি এটি সহায়ক ছিল। chagbert।


0

এই সমাধানটি আমার পক্ষে সহজ এবং কার্যকর (126 এর সাথেও) কাজ করে

CONVERT(NVARCHAR(MAX), CAST(GETDATE() as date), 120)

0

যদি আপনার উত্স তারিখের ফর্ম্যাটটি সমস্ত গণ্ডগোলিত হয় তবে এর লাইন ধরে কিছু চেষ্টা করুন:

select
convert(nvarchar(50),year(a.messedupDate))+'-'+
(case when len(convert(nvarchar(50),month(a.messedupDate)))=1 
    then '0'+ convert(nvarchar(50),month(a.messedupDate))+'-' 
    else convert(nvarchar(50),month(a.messedupDate)) end)+
(case when len(convert(nvarchar(50),day(a.messedupDate)))=1 
    then '0'+ convert(nvarchar(50),day(a.messedupDate))+'-'
    else convert(nvarchar(50),day(a.messedupDate)) end) 
from messytable a

0
 IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);

cmdGetPaymentStatement.Parameters.AddWithValue("@pStartDate", DateTime.Parse("22/12/2017", culture, System.Globalization.DateTimeStyles.AssumeLocal)).IsNullable = true;

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