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

ответ

1

Это left(a.dob,2)+ '/'+right(left(a.dob,4),2)+'/'+right(a.dob,2)+left(right(a.dob,4),2) кошмара подстроки конкатенации принимает дату, вероятно, хранятся в виде текста (тьфу) и возвращает его в формате, который может быть преобразован в дату с convert(datetime, <textdate) формулой это завернутой в.

Текстовая дата представляется в формате, где месяц находится в первых двух символах, день находится в 3 и 4 символах и году ... ну годы хранятся вместо 1999, как 9919, потому что некоторые психопаты разработали это поле ...

Так что это занимает 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 = uses-of-the-left-string-function) объяснит, что фактически выполняют функции LEFT() 'и' RIGHT() 'с 4 и 2:) – AHiggins

+0

Это помогает. Спасибо вам обоим. – sclass

Смежные вопросы