এসকিউএল এ সময় ছাড়াই কীভাবে নির্বাচন করবেন to


257

আমি যখন এসকিউএল-তে তারিখটি নির্বাচন করি তখন এটি হিসাবে ফিরে আসে 2011-02-25 21:17:33.933। তবে আমার কেবল ডেটের অংশটি প্রয়োজন, এটি 2011-02-25। কিভাবে আমি এটি করতে পারব?


4
আমি অনুমান করি যে সে একটি স্ট্রিং চায় এবং তাই এটি কোনও নকল নয়
bernd_k


@ টাইলারহহ বর্তমান সময়ের পরিবর্তে 2011-02-25 00: 00: 00.000 পাওয়ার কোনও উপায় আছে?
থ্রান্ডার

উত্তর:


148

আমার ধারণা তিনি একটি স্ট্রিং চান।

select convert(varchar(10), '2011-02-25 21:17:33.933', 120)

120 এখানে রূপান্তর ফাংশন যে আমরা ইনপুট তারিখ পাস বলে নিম্নলিখিত বিন্যাসে : yyyy-mm-dd hh:mi:ss


120 এর জন্য কী?
Павле


আমি এই নির্বাচনটি রূপান্তর (ভারচার (10), APPROVED_DATE, 120) ব্যবহার করেছি, আমি ত্রুটি কলাম পেয়েছি APPROVED_DATE তারিখের সময়, আমি কীভাবে এটি রূপান্তর করব? ত্রুটি মাল্টি-পার্ট শনাক্তকারী "LAB_RESULTS.APPROVED_DATE" আবদ্ধ হতে পারে না।
আবদুল্লাহ

530

এসকিউএল সার্ভার ২০০৮ এর জন্য:

Convert(date, getdate())  

দয়া করে https://docs.microsoft.com/en-us/sql/t-sql/function/getdate-transact-sql দেখুন


6
আমি পেয়েছি "টাইপ ডেট কোনও সংজ্ঞায়িত সিস্টেম টাইপ নয়।"
সিড্রাইভ

10
DATE২০০৮ সালে নতুন
টিম শ্মেলটার

33
আমার কেন কোনও ধারণা নেই যে এটি কেন এমন উচ্চতর উত্তর। এই প্রশ্নটি এসকিউএল সার্ভার ২০০ 2005-এর জন্য, ২০০৮ নয় 2005 2005 এর dateডেটা-টাইপ নেই তাই এই সমাধানটিকে অবৈধ হিসাবে রেন্ডারিং করে।
জোশুয়া বার্নস

84
এটি উত্সাহিত করা হয়েছে কারণ লোকেরা তাদের সমস্যার সমাধান খুঁজছেন, লেখক নয়। সুতরাং যদি 110 জন তাদের জন্য এটি কাজ করে তবে আমি মনে করি এটির পক্ষে এটি 110 টি উচ্চতর v
জেমস

আমি যখন কনভার্ট (টেবিল.অর্ডার_ডেট, গেটডেট ()) নির্বাচন করি তখন আমার একই ত্রুটি হয়; এসকিএল সার্ভার সংস্করণ 2017, ত্রুটি (প্রকারের তারিখ কোনও সংজ্ঞায়িত সিস্টেমের ধরণ নয়) কলামের টাইপের ডেটটাইম
আবদুল্লাহ

57

দ্রুততম datediff, যেমন

select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl

তবে যদি আপনার কেবলমাত্র মানটি ব্যবহার করতে হয় তবে আপনি ডেটেড্ড এড়িয়ে যেতে পারেন, যেমন

select ...
WHERE somedate <= datediff(d, 0, getdate())

যেখানে datediff(d, 0, getdate())সময় অংশ ব্যতীত আজকের তারিখটি ফিরিয়ে দিতে অভিব্যক্তিটি যথেষ্ট।


ওল্ডি কিন্তু গুডি, পুরানো 2000/2005 ডিবিতে কয়েকবার বার এই কৌশলটি ব্যবহার করেছে।
কিথস

43

CAST (GETDATE () তারিখ হিসাবে) ব্যবহার করুন যা আমার পক্ষে সহজ কাজ করেছে।


আমি আমার কলামের নামটি কোথায় যুক্ত করব? castালাই (getdate () হিসাবে তারিখ, অর্ডার_ তারিখ) নির্বাচন করবেন?
আবদুল্লাহ

@ আবদুল্লাহCAST(order_date AS DATE)
অ্যান্ড্রু মর্টন


12

আপনি এই মত ব্যবহার করতে পারেন

SELECT Convert(varchar(10), GETDATE(),120) 

আমি আমার কলামের নাম অর্ডার তারিখটি কোথায় রাখব?
আব্দুল্লাহ

10

জন্য 2008 পুরোনো সংস্করণ :

SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)


এই জন্য সাধুবাদ! অন্যগুলির সমাধানগুলি কেবল ভার্চার (10) অংশের উপর নির্ভর করে, যা কেবল মানটি কেটে দেয়।
গনজা ওভিডো

2

কিছুটা দেরি হয়ে গেছে, তবে ওডিবিসি "কার্টেট" ফাংশনটি ব্যবহার করুন (অ্যাঙ্গেল ব্রেসেস 'এফএন' হল ওডিবিসি ফাংশন এস্কেপ ক্রম)।

SELECT {fn curdate()} 

আউটপুট: 2013-02-01


4
আপনি উত্তরটি গ্রহণযোগ্য উত্তরের চেয়ে কীভাবে ভাল বলে মনে করেন সে সম্পর্কে আমি সত্যই আগ্রহী। বা আপনি সম্ভবত অন্যান্য উত্তর উল্লেখ করছেন যেখানে?
মিকেল এরিকসন

1
@ মিকায়েল এরিকসন: হুম, কারণ ওডিবিসি-ক্রিয়াকলাপগুলি ননডেটারিস্টিনিস্টিক এসকিউএল-সার্ভার ফাংশনগুলির বিপরীতে প্রচ্ছন্ন ফাংশন এবং তাই সূচকযোগ্য। কিন্তু কিছু মনে করবেন, এটি শুধুমাত্র একটি স্কেলিং ইস্যু যখন আপনি উৎপাদনে 1 * 10E6 টি এন্ট্রির মধ্যে পরীক্ষা করতে আপনার 3 এন্ট্রিগুলি থেকে সরানো, আপনি উন্নয়ন সময় কোন সমস্যা পান;)
স্টিফান Steiger

8
আপনি যদি এই ক্যোয়ারীটি চালনা SELECT {fn curdate()} FROM (SELECT 1) AS T(X)করেন এবং প্রকৃত এক্সিকিউশন প্ল্যান (এক্সএমএল সংস্করণ) দেখুন তবে আপনি দেখতে পাবেন যে বাস্তবে মৃত্যুদন্ড কার্যকর করা হয়েছে তা CONVERT(varchar(10),getdate(),23)। তাই এই ODBC ফাংশনের ডাটাটাইপ হয় varchar(10)যার মানে আপনি একটি সাথে ভালো ফলাফল তুলনা করতে চান datetimeআপনার কাছ থেকে একটি অন্তর্নিহিত রূপান্তর পাবেন varchar(10)করার datetimeএকটি স্ট্রিং উপর yyyy-mm-dd। এই অন্তর্নিহিত রূপান্তরটি ব্যর্থ হবে set dateformat dmy
মিকারেল এরিকসন

1
@ মিকারেল এরিকসন: দেখতে একটি বাগের মতো দেখতে তাদের পরিবর্তে সিলেক্ট কনভার্ট (চার (8), GETDATE (), 112) ব্যবহার করা উচিত।
স্টেফান স্টেইগার

"ক্যানোনিকাল ফাংশন এবং অতএব সূচকযোগ্য, ননডেটেরিনিস্টিক এসকিউএল-সার্ভার ফাংশনগুলির বিপরীতে" - এর, কী?
মার্টিন স্মিথ


2

প্রয়োজনে একই ডাটাবেস রাখার জন্য তারিখে রূপান্তর করার পরে এটিকে ডেটটাইমে ফিরিয়ে আনুন

select Convert(datetime, Convert(date, getdate())  )


1

ব্যবহার সহজ:

convert(date, Btch_Time)

নীচে উদাহরণ:

টেবিল:

Efft_d       Loan_I  Loan_Purp_Type_C   Orig_LTV    Curr_LTV    Schd_LTV    Un_drwn_Bal_a      Btch_Time            Strm_I  Btch_Ins_I
2014-05-31  200312500   HL03             NULL         1.0000    1.0000         1.0000      2014-06-17 11:10:57.330  1005    24851e0a-53983699-14b4-69109


Select * from helios.dbo.CBA_SRD_Loan where Loan_I in ('200312500') and convert(date, Btch_Time) = '2014-06-17'

1

এটি খুব দেরীতে কিন্তু অনুসরণ আমার জন্য ভাল কাজ করেছে

declare @vCurrentDate date=getutcdate()

select @vCurrentDate

যখন ডেটা টাইপের তারিখ হয়, তখন ঘন্টাগুলি কেটে নেওয়া হত


0

পিএলএসকিউএল এ আপনি ব্যবহার করতে পারেন

to_char(SYSDATE,'dd/mm/yyyy')

একটি মন্তব্যে এটি স্থানান্তর বিবেচনা করুন।
xlembouras

এই প্রশ্নটি এসকিউএল সার্ভার সম্পর্কে ... ওরাকল নয়
বেন

0

প্রথমে তারিখটিকে ভাসতে রূপান্তর করুন (যা সংখ্যাসূচকটি প্রদর্শন করে), তারপর ROUNDসংখ্যাকে 0 দশমিক পয়েন্টে রূপান্তর করুন, তারপরে তারিখের সময় রূপান্তর করুন ।

convert(datetime,round(convert(float,orderdate,101),0) ,101)

0

আপনি যদি তারিখের প্রকারটি কেবল তারিখের ব্যবহার হিসাবে ফিরিয়ে দিতে চান

CONVERT(date, SYSDATETIME())

অথবা

SELECT CONVERT(date,SYSDATETIME()) 

অথবা

DECLARE @DateOnly Datetime
SET @DateOnly=CONVERT(date,SYSDATETIME())

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