2014-09-24 211 views
0

有人可以解釋此查詢。我知道,涉及到別名,轉換和鏈接數據庫,但不熟悉數字「4,2」的位置。2005 SQL Server Management Studio

set birthday = convert(datetime, left(a.dob,2)+ '/'+ 
       right(left(a.dob,4),2)+'/'+ 
       right(a.dob,2)+left(right(a.dob,4),2)) 
from 
    [plkfsql2k5\prod2k5].st_data.dbo.st_patient a 
+0

你對此並不熟悉:'right(left(a.dob,4),2)'? – Arion 2014-09-24 14:09:40

回答

1

left(a.dob,2)+ '/'+right(left(a.dob,4),2)+'/'+right(a.dob,2)+left(right(a.dob,4),2)惡夢子串級聯的正採取的日期,或許存儲爲文本(啊),並在可轉化爲日期與convert(datetime, <textdate)公式它包裹在一個格式返回它。

文本日期似乎是一個格式,其中的月份是在前2個字符,一天是在第3和第4個字符和年...好年份存儲而不是19999919因爲一些精神病患者設計這現場...

所以它需要這個mmddyyYY格式(只有瘋狂的人才會使用)並將其轉換爲mm/dd/YYyy,n使用convert(datetime, <text date>)函數將其轉換爲實際日期。

請注意,如果您處於使用dd/mm/yyyy格式的國家/地區,則可能需要對我的解釋進行調整,因爲傳入的文本值可能爲ddmmyyYY並將其轉換爲dd/mm/YYyy。儘管如此,仍然是一個瘋狂的香蕉的起點。

+0

對整個事情的很好的解釋 - 以防萬一@sclass需要一些更基本的信息,不過,[本頁](http://www.sql-server-helper.com/tips/tip-of-the-day。 aspx?tkey = D0DD25A9-9BB6-43D6-B7B8-B592B1AD026D&tkw =使用左字符串函數)將解釋「LEFT()」和「RIGHT()函數實際上對4和2: ) – AHiggins 2014-09-24 14:27:58

+0

這有幫助。感謝你們兩位。 – sclass 2014-09-24 14:34:38

相關問題