0

我正在从外部 Access 数据库中检索数据。在这个数据库中,有一个列字段' recordTime',其格式如下dd/mm/yyyy hh:nn:ss AM/PM,但是该字段的类型是字符串(不要问我为什么不使用日期/时间,我无法控制)。

现在我想更新此列字段以使其为yyyy-mm-dd hh:nn:ss,并且可能仍为字符串类型。我使用这样的查询:

        UPDATE  table1
        SET     recordTime = Format(recordTime, 'dd/mm/yyyy hh:nn:ss AM/PM');

我做错了吗?

4

2 回答 2

0

更新在 MS Access 中,默认日期格式是mm/dd/yyyy在重新格式化之前,您必须通过交换ddmm部分来消除日期值的歧义。

UPDATE Table1
  SET recordTime = FORMAT(MID(recordTime, 4, 2) + '/' + 
                          LEFT(recordTime, 2) + 
                          MID(recordTime, 6), 'yyyy-mm-dd hh:nn:ss')
 WHERE recordTime LIKE '##/##/####*'

如果您最初的值为

2013 年 11 月 9 日下午 04:00:00
23/09/2013 下午 02:00:00

然后更新后你会得到

2013-09-11 16:00:00
2013-09-23 14:00:00
于 2013-09-11T06:05:31.160 回答
0

由于您的列是字符串类型,您将不得不使用子字符串,例如(ms-access 语法,如果您在访问数据库中工作)

SET recordTime= mid(recordTime,7,4) & "-" & mid(recordTime,4,2) & "-" & left(recordTime,2) & " " & mid(recordTime,12,8)

MS-SQL 语法

SET recordTime= SUBSTRING(recordTime,7,4)+'-'+SUBSTRING(recordTime,4,2)+'-'+ LEFT(recordTime,2)+' '+SUBSTRING(recordTime,12,8)
于 2013-09-11T06:04:16.337 回答