【发布时间】:2015-05-12 13:48:30
【问题描述】:
我的最终公式有问题:
ALTER TABLE tempTestProject
ADD [T12 Backdated jnls] varchar(50)
update tempTestProject
set [T12 Backdated jnls] = 'X' where cast([Created Date] as date) > cast([Effective Date] as date)
我得到错误:
从字符转换日期和/或时间时转换失败 字符串。
现在,在进行上述操作之前,我必须重新安排我的日期,因为我在处理之前的日期时遇到了问题。我执行了以下操作以将我的日期转换为所需的格式:(请记住我的日期是 varchar (50),最初的格式是 18/01/2014)
ALTER TABLE tempTestProject
ADD [Created Date] varchar(50)
update tempTestProject
set [Created Date] = (RIGHT(["Created Date"],4) + '/' + SUBSTRING(["Created Date"],4,2) + '/'+ LEFT(["Created Date"],2))
ALTER TABLE tempTestProject
ADD [Effective Date] varchar(50)
update tempTestProject
set [Effective Date] = (RIGHT(["Effective Date"],4) + '/' + SUBSTRING(["Effective Date"],4,2) + '/'+ LEFT(["Effective Date"],2))
希望我解释得足够清楚,感谢您的帮助!
【问题讨论】:
-
你看到这个问题了吗? stackoverflow.com/questions/207190/…
-
不要将日期存储在字符串中,这是荒谬的。从您发布的内容来看,这是行不通的,因为您的新列中的所有值都是 NULL。
-
1) 在数据库中存储日期、时间或日期和时间值时,请使用其中一种日期时间数据类型。
-
2) 切勿创建名称包含嵌入空格的 SQL 对象(例如表或列)。
-
3) 以上两条规则没有例外。
标签: sql sql-server date casting format