2014-09-24 259 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

相关问题