Попытка преобразовать «гг / мм / дд чч: мм: сс» (хранится как символ) в дату и время, используя вычисляемый столбец - PullRequest
2 голосов
/ 29 ноября 2009

Кажется, это должно быть просто, но это заставляет меня взбираться на стену.

У меня есть два столбца - 'tx_date' и 'time', каждый из которых хранится в виде char (10). (плохой дизайн базы данных, я знаю, но не мой дизайн)

Из запроса я могу преобразовать их в дату и время -

"... конвертировать (DateTime, tx_date, время, 11) ..."

(поэтому tx_date "09/11/27" и время "07:12:18" произведут "2009-11-27 07: 12: 18.000")

Но если я затем скопирую и вставлю преобразование в поле «формула» в SQL Server Management Studio (то же самое место, которое я проверял, оно работает в запросе), оно сообщит мне «Ошибка проверки формулы для столбца ..» *

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

1 Ответ

4 голосов
/ 29 ноября 2009

Вы можете добавить вычисляемое поле в таблицу в SQL Server Management Studio, используя запрос без проблем:

ALTER TABLE dbo.YourTable 
  ADD NewDateTimeField AS CONVERT(DATETIME, tx_date + ' ' + time, 11) 

но, к сожалению, вы не можете сделать его "PERSISTED", поскольку функция CONVERT недетерминирована. Это означает, что он будет проверяться каждый раз, когда к нему обращаются, и вы не можете поместить в него индекс: - (

Марк

...