【问题标题】:Convert varchar to date format将 varchar 转换为日期格式
【发布时间】:2013-08-13 08:08:06
【问题描述】:

我想将 varchar (50) 列转换为日期格式。我使用了以下代码:

Update [dbo].[KYCStatus062013] 
Set [REGISTRATION_DATE_]= convert(datetime,[REGISTRATION_DATE_] ,103)

但是有一个错误说:

Msg 241, Level 16, State 1, Line 1 转换时转换失败 字符串中的日期和/或时间。

我想要这种格式:dd-mmm-yyyy。我没有任何选项可以创建另一个表/列,因此“更新”是我可以使用的唯一方法。任何帮助将不胜感激。

编辑:我的源数据如下所示:

21-MAR-13 07.58.42.870146 PM  
01-APR-13 01.46.47.305114 PM  
04-MAR-13 11.44.20.421441 AM  
24-FEB-13 10.28.59.493652 AM

编辑 2:我的一些源数据还包含仅包含时间的错误数据。示例:

 12:02:24
 12:54:14
 12:45:31
 12:47:22

【问题讨论】:

标签: sql sql-server tsql type-conversion


【解决方案1】:

试试这个。

Update [dbo].[KYCStatus062013] 
Set [REGISTRATION_DATE_]= REPLACE(CONVERT(VARCHAR(11),[REGISTRATION_DATE_],106),' ' ,'-')

这将输出为 dd-mmm-yyyy

如果你想更新为日期格式,那么你必须修改你的表格。

编辑 1 =

Update [dbo].[KYCStatus062013] 
    Set [REGISTRATION_DATE_]= REPLACE(CONVERT(VARCHAR(11),convert(datetime,left([REGISTRATION_DATE_],9),103),106),' ' ,'-')

编辑 2 = 检查这个

http://sqlfiddle.com/#!3/d9e88/7

编辑 3 = 如果您只输入时间,请勾选此项

http://sqlfiddle.com/#!3/37828/12

【讨论】:

  • 我试过这个,但结果显示如下:21-MAR-13-0
  • 现在它显示以下错误:从字符串转换日期和/或时间时转换失败。不过它会运行查询一段时间。
  • @SadatMainuddin 检查我给你演示的编辑 2
  • 感谢您的回复。我仍然无法使用它。同样的错误。但是,我已将查询更改为以下,这对我来说非常有效。不过谢谢你的提醒。更新 [dbo].[KYCStatus062013] 设置 [REGISTRATION_DATE_]= REPLACE(CONVERT(VARCHAR(50),(left ([REGISTRATION_DATE_],9)),106),' ' ,'-')
  • @SadatMainuddin 请检查编辑 3 进行查询。
【解决方案2】:

该错误表明您的表中的某个值与 103 格式不匹配,无法转换。您可以使用 ISDATE 函数来隔离有问题的行。最终,错误意味着您的表有错误的数据,这导致了我的主要担忧。为什么不使用 datetime 或 date 数据类型并在选择数据时使用转换样式,甚至在应用层更改表示?这将防止发生您所描述的问题。

我强烈建议您更改列的数据类型以更准确地表示正在存储的数据。

【讨论】:

    【解决方案3】:

    PostgreSQL 格式化函数提供了一套强大的工具,用于将各种数据类型(日期/时间、整数、浮点数、数字)转换为格式化字符串,以及将格式化字符串转换为特定数据类型。

    to_date(text, text)
    to_date('05 Dec 2000', 'DD Mon YYYY')
    

    点击这里了解更多详情

    http://www.postgresql.org/docs/8.1/static/functions-formatting.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多