【问题标题】:SQL SERVER converting dates with multiple formatsSQL SERVER 转换多种格式的日期
【发布时间】:2019-05-02 00:07:30
【问题描述】:

我有一个日期如下的 varchar 列:

1. 01-JUN-13
2. 01/23/12
3. 01.13.13
4. 01-13-13
5. 13-01-13

是否可以将它们全部转换为单一格式?我尝试了很多转换/转换通常会导致 从字符串转换日期和/或时间时转换失败。

或者什么都没有发生。

【问题讨论】:

  • 似乎 4 和 5 是不确定的。我们怎么知道“02-03-13”是什么?可能是 2 月 3 日或 3 月 2 日。
  • 告诉我这里的目的是将其更改为 DATETIME 列,而不是 varchar?这就是你应该做的。
  • @BillGregg 或 2002 年 3 月 13 日。
  • 是的,这就是目的,将全部转换/转换并发送到带有日期时间列的新表。我没有设置这个表。

标签: sql sql-server sql-server-2005


【解决方案1】:

我认为没有办法将所有 varchar 值转换为日期,因为这是一个模棱两可的请求..

给定这个值:02/03/2011 4:15:22 PM +0500

我怎么知道是 3 月 2 日还是 2 月 3 日?

编辑:
假设您忽略这种情况,您将需要使用相关的转换方法转换每种格式,您可以找到很多关于此的帖子,例如:

http://www.codeproject.com/Articles/576178/cast-convert-format-try-parse-date-and-time-sql

http://www.sql-server-helper.com/sql-server-2008/sql-server-2008-date-format.aspx

【讨论】:

  • 我将使用 where 子句根据另一列来识别 mm/dd/yyyy 和 dd/mm/yyyy。如果您忽略此实例,我会更感兴趣。
  • 假设您在另一列中有格式,是的,这是可能的。
【解决方案2】:

我意识到我还年轻天真地认为 SQL Server 会有一个捕获所有日期的函数并一一计算。

我确实找到了一个有用的 python 包。这是我使用的代码,它并不完美,但它一次评估一个以找出日期格式

import pypyodbc
from dateutil import parser



def load_table(connection,type):
    curPull = connection.cursor()

    # Pull rows
    if type == "diff":
        updateStatement = ("UPDATE tmp_date SET convertedDateTime = ? WHERE id = ?")
        curPull.execute("select id,dateNeeded,convertedDateTime from tmp_date where convertedDateTime IS NULL")
        result_set = curPull.fetchall()
        for row in result_set:
            vrowid = row[0]
            vdateNeeded = row[1]
            vconvertedDateTime = row[2]

            vparsedDate = parser.parse(vdateNeeded)
            curPull.execute(updateStatement, (vparsedDate,vrowid))
    connection.commit() 

def main():
    serverIn = ""
    databaseIn = ""
    username = ""
    password = ""
    conString = "Driver={SQL Server};Server=%s;Database=%s;UID=%s;PWD=%s;" % (serverIn, databaseIn, username, password)
    connection = pypyodbc.connect(conString)


    load_table(connection,"diff")
    connection.close()


main()

【讨论】:

    猜你喜欢
    • 2013-10-14
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多