Score:0

SQL การแปลงสตริงเป็นวันที่

ธง us

สิ่งนี้ทำให้ฉันงุนงงมาสองสามวันแล้วและกำลังขอความช่วยเหลือ ฉันใช้ SQL Server 2017

ฉันกำลังพยายามจัดการสตริงจากฟิลด์รูปแบบอิสระ และแปลงเป็นวันที่ในรูปแบบ "dd/mm/yyyy" หรือหากไม่ได้อยู่ในรูปแบบนี้ ให้แสดงข้อความแบบคำต่อคำ

ฉันต้องการสิ่งนี้ใน VIEW ดังนั้นจึงไม่สามารถใช้ SET LANGUAGE ได้ ฟังดูง่ายโดยใช้ แปลง และ ไอเดท แต่ดูเหมือนจะไม่ทำงาน

ดังนั้นสำหรับตัวอย่างโค้ดด้านล่าง (โปรดจำไว้ว่านี่จะอยู่ใน VIEW) ฉันต้องการอ่านข้อความและถ้าสตริงแปลงเป็นวันที่ (เช่นอยู่ในรูปแบบ "dd/mm/yyyy" จากนั้นเรียกใช้การแปลงเป็นวันที่ตามที่ฉันต้องการในรูปแบบวันที่เพื่อให้ Excel รับ (ผ่าน Connect SQL Sever Database)) และหากไม่แปลงเป็นวันที่ แสดงข้อความตามที่เป็นอยู่

สร้างตาราง dateTest1 
(idx int, 
 dateStringTest varchar(15) 
); 
  
แทรกใน dateTest1 (idx, dateStringTest) 
ค่า (1, '13/01/2021'), (2, 'ไม่'); 
 
 
เลือก 
       กรณีเมื่อ isdate(convert(datetime, dateStringTest, 103)) = 1 
       จากนั้นแปลง (datetime, dateStringTest, 103)
       อื่น dateStringTest 
       สิ้นสุดเป็น dtres
จาก dateTest1 
--โดยที่ idx = 1 
  
-- ข้อผิดพลาด: ข่าวสารเกี่ยวกับ 241 ระดับ 16 สถานะ 1 บรรทัด 15 การแปลงล้มเหลวเมื่อแปลงวันที่และ/หรือเวลาจากสตริงอักขระ 
-- ข้อผิดพลาดนี้เกิดขึ้นกับ idx = 2 Idx = 1 ใช้งานได้

ความช่วยเหลือใด ๆ เกี่ยวกับเรื่องนี้จะได้รับการชื่นชมอย่างมากเนื่องจากฉันกำลังดำเนินการอยู่

ขอบคุณล่วงหน้า พอล

Score:1
ธง cn

ฉันไม่แน่ใจว่าฐานข้อมูลของคุณเหมาะสมกับการทำเช่นนี้เพียงใด ฟังก์ชันการแปลงข้อมูลใน SQL Server ค่อนข้าง "เงอะงะ" เมื่อเทียบกับฟังก์ชันอื่นๆ

อย่างไรก็ตาม จากมุมมองของฐานข้อมูลของคุณ:

ถ้ามีอะไร ที่ควร จะเป็น วันที่แล้วล่ะก็ ควรจะเป็น วันที่.
มันอาจจะ "ขาดหายไป" (เช่น nullable) แต่จะเป็นอย่างอื่นไปไม่ได้
ถ้ามัน คือ จะเป็นอย่างอื่นก็ไม่ควรปฏิบัติ เช่นวันที่.

ผู้ใช้ไม่สามารถเข้าได้ วันที่ - เพียง ตัวแทนตัวละคร ของพวกเขา.
การแสดง [ตัวเลขและ] วันที่จากแอปพลิเคชันของคุณต้องจัดรูปแบบเป็น "ทางออก"
การอ่าน [ตัวเลขและ] วันที่ในใบสมัครของคุณต้องมีการย้อนกลับ "ยกเลิกการจัดรูปแบบ" (และการตรวจสอบความถูกต้องของหลักสูตร) ​​ใน "ทางเข้า"
ข้อมูลควร เสมอ เก็บไว้ใน ถูกต้อง ประเภทข้อมูล - "เครื่องมือที่เหมาะสมสำหรับงานที่เหมาะสม"

การแยกวิเคราะห์ข้อความอิสระคือ อาจจะ ทำได้ดีที่สุดในแอปพลิเคชันของคุณ แยกค่าวันที่ ตรวจสอบความถูกต้อง และ "ยกเลิกการจัดรูปแบบ" แล้วจัดเก็บ

Michael Hampton avatar
cz flag
โปรดพยายามหลีกเลี่ยงการตอบคำถามนอกประเด็น
Phill  W. avatar
cn flag
การตอบคำถามเป็นสิ่งหนึ่ง การชี้แนะผู้โพสต์ให้ถามคำถามมักจะดีกว่า เพราะพวกเขาอาจพยายามแก้ปัญหา /ผิด/ ฉันไม่ถือว่าการชี้นำผู้คนให้ห่างไกลจากการปฏิบัติที่ไม่ดี [ตรงไปตรงมา] ซึ่ง /จะ/ กลับมากัดกินพวกเขาในภายหลังนั้นถือเป็น "นอกเรื่อง" การจัดการวันที่นั้นยากพอๆ กับเมื่อคุณรู้ว่าคุณกำลังทำงานกับวันที่ การเพิ่ม ifs และ buts และบางทีเกี่ยวกับว่าสิ่งที่คุณกำลังมองหาคือวันที่หรือไม่ จะทำให้คุณและฐานข้อมูลของคุณบ้าคลั่ง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา