2009-11-28 5 views
2

Cela semble être simple, mais cela me remonte le moral.Essayer de convertir "aa/mm/jj hh: mm: ss" (stocké comme caractère) en date et heure à l'aide de la colonne calculée

J'ai deux colonnes - 'tx_date' et 'time' stockées chacune sous la forme char (10). (Mauvaise conception de base de données, je sais, mais n'a pas été ma conception)

d'une requête que je peux les convertir en un datetime très bien -

» ... convertir (datetime, tx_date, temps, 11). .. »

(si tx_date "11/09/27" et le temps "07:12:18" produira "2009-11-27 07: 12: 18,000")

Mais si je puis copier et collez le convertir dans le champ 'formule' dans SQL Server Management Studio (le même endroit où j'ai testé cela fonctionne dans une requête) il me dit "Erreur de validation de la formule pour la colonne .."

Si je l'oblige à utiliser cette formule de toute façon cela fonctionne, mais je ne veux pas aller de l'avant et ajouter cette colonne calculée à une table importante jusqu'à ce que je sais pourquoi il a un problème avec la formule.

Répondre

4

Vous pouvez ajouter le champ calculé à la table dans SQL Server Management Studio à l'aide d'une requête sans problème:

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

mais malheureusement, vous ne pouvez pas le faire « MAINTENUE » puisque la fonction CONVERT dans la non-déterministe. Cela signifie qu'il va être examiné à chaque fois qu'il est accessible, et vous ne pouvez pas mettre un index sur ce :-(

Marc

+0

+1 droit sur, comme toujours :) –

+0

@ Andrew: Je fais de mon mieux , Merci! :-) –

+1

Je n'ai pas besoin d'être persistant (en fait je ne veux pas que ce soit parce que je ne veux pas développer la base de données). J'essayais de l'ajouter comme une colonne non persistante (la case à cocher 'persister' n'est pas cochée) C'est juste pour la commodité vraiment - marre de coller des données dans Excel et l'avoir pensé que la date est le 9 novembre 2027. – MrVimes