2

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

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

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

或者什么都没有发生。

4

2 回答 2

0

我认为没有办法将所有 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

于 2013-09-19T15:47:33.463 回答
0

我意识到我还年轻天真地认为 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()
于 2019-05-01T16:07:30.527 回答