ใน SQL Server 2005 ฉันจะได้รับวันที่ปัจจุบันโดยไม่มีเวลาได้อย่างไร ฉันได้ใช้GETDATE()
แต่ต้องการให้มีเวลา 00: 00: 00.0
ใน SQL Server 2005 ฉันจะได้รับวันที่ปัจจุบันโดยไม่มีเวลาได้อย่างไร ฉันได้ใช้GETDATE()
แต่ต้องการให้มีเวลา 00: 00: 00.0
คำตอบ:
เร็วที่สุดถ้าคุณมีการย้ำกว่าระเบียนและไม่ได้มีวันที่ใน SQL Server 2008
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
คำตอบที่แตกต่างและยอดเยี่ยมสองอย่างของ StackOverflow คือ: One , Two
การแปลง Varchar เป็นหนึ่งในวิธีที่แย่ที่สุดที่จะทำ แน่นอนว่าสำหรับค่าหนึ่งอาจไม่สำคัญ แต่เป็นนิสัยที่ดีในการเข้า
วิธีนี้ยังกำหนดไว้เช่นกันถ้าคุณต้องการสร้างดัชนีคอลัมน์ที่คำนวณ แม้แต่ชาวบ้านที่เขียนหนังสือเกี่ยวกับ SQL Server ก็ยังไม่ทันได้แปลงข้อมูล
เทคนิคนี้ยังขยายได้
DATEADD(day, DATEDIFF(day, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 31)
แก้ไข:
ดังที่ฉันได้กล่าวถึงเกี่ยวกับการกำหนดวิธีการ varchar ไม่ปลอดภัยเว้นแต่คุณจะใช้สไตล์ 112
คำตอบอื่น ๆ ที่นี่ชี้ให้เห็นว่าคุณจะไม่ใช้สิ่งนี้กับคอลัมน์ สิ่งนี้ถูกต้อง แต่คุณอาจต้องการเลือกแถว 100k หรือเพิ่มคอลัมน์ที่คำนวณหรือ GROUP BY dateonly จากนั้นคุณต้องใช้วิธีนี้
คำตอบอื่น ๆ ยังระบุถึงรูปแบบ 110 นี่ไม่ใช่ภาษาหรือ SET DATEFORMAT ปลอดภัยและล้มเหลวด้วยการตั้งค่าภาษา "อังกฤษ" ดูคำแนะนำที่ดีที่สุดสำหรับประเภทข้อมูลวันที่โดย Tibor Karaszi
คุณต้องแปลงเป็น varchar โดยระบุรูปแบบของรูปแบบ (110 ในกรณีนี้) จากนั้นแปลง (หรือส่ง) ไปที่ datetime
select getdate(), cast(convert(varchar(10), getdate(), 110) as datetime)