日期格式化,SQL Server
我对我的最终公式有一个问题:日期格式化,SQL Server,sql,sql-server,date,casting,format,Sql,Sql Server,Date,Casting,Format,我对我的最终公式有一个问题: 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) 我得到一个错误: 从字符转换日期和/或时间时转换失败 绳子 现在,在我开始上面的
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)
希望我解释的足够多,谢谢你的帮助 如果您无法实现注释中所有的好建议,您可以使用
ISDATE
来测试字符串是否可以转换为日期。
编辑:
刚刚注意到你是如何存储日期的。在使用is date之前,请执行此行:
SET DATEFORMAT DMY;
select
case when ISDATE([CREATED DATE]) = 1
then cast([CREATED DATE] as date)
else null
end as <Your date name here>
设置日期格式DMY;
选择
ISDATE([CREATED DATE])=1时的情况
然后强制转换([创建日期]为日期)
否则无效
结束为
您看到这个问题了吗?不要用字符串存储日期,这是荒谬的。从您发布的内容来看,这不起作用,因为新列中的所有值都将为NULL。1)在数据库中存储日期、时间或日期和时间值时,请使用其中一种日期时间数据类型。2)永远不要创建SQL对象(如表或列)对于包含嵌入空格的名称。3)上述两条规则没有例外。
SET DATEFORMAT DMY;
select
case when ISDATE([CREATED DATE]) = 1
then cast([CREATED DATE] as date)
else null
end as <Your date name here>