SQL SERVER使用多种格式转换日期

问题描述 投票:2回答:2

我有一个varchar列,其日期如下:

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

是否可以将所有这些转换为单一格式?我尝试过很多转换/强制转换,通常会在转换字符串的日期和/或时间时导致转换失败。

或者什么也没发生。

sql sql-server sql-server-2005
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


0
投票

我意识到我年轻而天真地认为SQL Server会捕获日期的所有功能并逐一评估。

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

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()
© www.soinside.com 2019 - 2024. All rights reserved.