首页 文章

在将日期列从varchar转换为sql中的datetime格式之前,将一个表的记录复制到另一个表

提问于
浏览
0

我需要将一个表的记录复制到另一个表但在此之前,我需要转换日期时间格式的日期戳列(nvarchar),因为日期是varchar格式,因此我无法查询表 . 我知道如何转换日期时间格式的varchar,但它是针对单个记录 . 任何人都可以用一种简单而快速的方式来指导我以日期时间格式转换整列,然后将记录复制到另一个表格 . varchar datestamp的格式是2013年1月16日星期三 .

declare @dateString varchar(50)
set @dateString = 'wednesday, january 16, 2013'

declare @index int
set @index = charindex( ',', @dateString )
set @dateString = substring( @dateString, @index + 1, len(@dateString) - @index)

select cast(@dateString as datetime)

上面的代码在datetime中转换我的格式的varchar

2 回答

  • 0

    看起来您使用的是MS SQL Server,而不是MYSQL .

    您需要做的就是在那里使用函数逻辑,用 charindex(',' columnname) 替换子字符串函数中的@index,并将其作为INSERT..SELECT中 SELECT 语句的一部分 .

    INSERT ....
    SELECT cast(
        substring( COLUMN
                  , charindex( ',', COLUMN ) + 1
                  , len(COLUMN) - charindex( ',', COLUMN )
                 ) as datetime
               ) from XXX
    

    A full example is available on this SQLFiddle.

  • 0

    我有同样的问题,我已经解决了这个问题 .

    • 使用前缀 - 示例table1 - > backup_table1制作整个表的副本

    • 删除原始表格中的所有原始内容,例如把它弄空

    • 将原始表中的varcher字段更改为date或datetime . 我把我从VARCHAR改为DATE .

    • 将备份表中的所有信息复制到原始信息,但使用sql查询直接转换日期 . 我正在将field1和field2从dd-mm-YY转换为YY-mm-dd

    我用过这个:

    INSERT INTO original_table
    (field1, field2, field3, field4 ...)
    SELECT 
    DATE_FORMAT(STR_TO_DATE(field1, '%d-%m-%Y'), '%Y-%m-%d'), 
    DATE_FORMAT(STR_TO_DATE(field`, '%d-%m-%Y'), '%Y-%m-%d'), 
    field3, filed4 ...
    FROM backup_table
    

    这样我复制信息并直接将varchar日期转换为DATE格式的sql标准格式 . 希望这会对某人有所帮助 .

相关问题