【发布时间】:2013-02-07 16:47:34
【问题描述】:
我从工作人员那里继承了一个数据库,他们将所有日期都存储在 VARCHAR() 中。通常我会把它转换成日期时间然后继续。但它以“2012 年 6 月 19 日星期二上午 11:46:40”的格式存储我正在使用 PHP 和 SQL 中的一些脚本和日期比较,我需要将其设为可用日期。
我尝试以这种方式转换它:获取旧日期并将其转换为一个单独的字段,我将在转换时重命名该字段。当我运行它时,我得到一个错误
UPDATE ticket_backup
SET new_date = CONVERT(VARCHAR(50), CAST(submit_date AS DATETIME), 109)
从二进制/varbinary 转换日期时间时转换失败 字符串。
所以现在我想我需要使用正则表达式删除一个子字符串来删除我不需要的内容。我需要将其转换为“2013-02-07 11:28:51”的 SQL 服务器 DATETIME 标准格式
任何帮助都将不胜感激,因为我遇到了障碍并且我需要转换很多记录。
【问题讨论】:
-
看起来像 PHP 的
strtotime()函数的有效格式 - 它将数据转换为时间戳(整数),然后您可以使用date('Y-m-d h:i:s', $iTimestamp)之类的东西重新格式化并使用它来更新 MySQL 表...那么它已经是正确的格式,所以应该可以只转换数据类型。不过,这只是暂时的理论,我还没有测试过。 -
列的格式是否完全统一?还是可能存在差异,例如额外的空格/填充、缺少逗号等?
-
它是完全统一的。它是由格式化变量插入的
标签: php sql sql-server regex tsql