Расхождение даты в SQL Server - PullRequest
0 голосов
/ 14 января 2012

Когда клиент вводит дату рождения, я отправляю '01/01/2000' (в виде строки) на мой SProc. Я должен зашифровать это поле (все остальные зашифрованные поля работают нормально), прежде чем сохранить его в таблице.

Определение поля в таблице: DOB varbinary (max). Когда я смотрю на дату в таблице, она отображается как 'Jan 01 200' (поле ввода от SProc - как nVarchar (10)).

Если я обновляю DOB из своего веб-приложения, меняя его с «01.01.2002» на «01/01/2000» - обновление SProc сохраняет поле DOB как «01 / 01/2000». 1005 *

Я проверил / перепроверил оба элемента: «Вставка» и «Обновление» и не вижу различий / причин, по которым вставка показывает «01 января 200», а с тех пор обновление показывает «01/01/2000». Есть идеи?

Пытаясь сделать это как можно более простым, вот фрагмент SProc:

ALTER PROCEDURE [dbo].[insKids](
    @aDOB nvarchar(10))
AS
OPEN SYMMETRIC KEY EncryptKey DECRYPTION BY CERTIFICATE EncryptCert
declare @aDOB_ varbinary(MAX)
if LEN(@aDOB) > 0 set @aDOB_ = ENCRYPTBYKEY(KEY_GUID('EncryptKey'),@aDOB)
INSERT INTO [Table1] ([aDOB]) VALUES (@aDOB_)

Передача значения '01 / 01/2000 '.

Вот пример Select SProc:

OPEN SYMMETRIC KEY EncryptKey DECRYPTION BY CERTIFICATE EncryptCert
SELECT CONVERT(nvarchar,DECRYPTBYKEY(aDOB)) as aDOB FROM Table1 WHERE (fk = @fk)

Опять же, я использую шифрование / дешифрование для многих полей без проблем - только это поле даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...