hi我正在尝试更新由日期组成的表。由于空格,我遇到了错误。pass程序员给日期字段指定了varchar类型。我想将我的日期转换为这种格式mm/dd/yyyy
,但日期字段中似乎到处都是这种类型的日期APRIL 8,2014年的问题是,我怎么知道更新的日期是这种格式的2014年4月8日样本?在将其更新为正确格式之前,例如mm/dd/yyyy
我已经尝试过这个SELECT转换(datetime,date_field,101),但它仍然给出错误
有什么建议吗?
SQL Server中的日期和时间数据类型没有任何隐式格式。它们存储在内部表示中。格式只有在屏幕上或报告等中显示给用户时才适用。在varchar()
列中存储日期是前程序员的错误,不应重复。将date
类型的新列添加到表中(http://msdn.microsoft.com/en-us/library/bb630352.aspx)。将当前varchar
中的值复制到此新列中,边转换边转换。这两种说法都适用于
select CONVERT(date, 'APRIL 8, 2014')
select CONVERT(date, '04/08/2014')
为了确保这些是唯一的组合,您应该使用正则表达式(SQL外部)或SUBSTRING()
(SQL内部)对当前值进行一些分析。
删除旧的varchar
,并重命名新的date
列。您可能需要删除并重新创建约束、索引和外键等。
将这些值传递回应用程序时,请将它们保持为日期格式。让用户界面或报告应用程序根据需要格式化日期。