【问题标题】:Access Update Statement: update according to current value访问更新语句:根据当前值更新
【发布时间】:2013-09-11 05:55:01
【问题描述】:

我正在从外部 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');

我做错了吗?

【问题讨论】:

    标签: sql date ms-access


    【解决方案1】:

    更新在 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

    【讨论】:

    • 感谢您的快速回复。但抱歉,您的解决方案适用于21/09/2013 04:00:00 PM,但对于11/09/2013 04:00:00 PM,我得到2013-11-09 16:00:00,而不是2013-09-11 16:00:00。这是我想要摆脱的东西。
    • @Lyon 足够公平。您必须首先通过交换 mmdd 部分来消除日期值的歧义。请参阅更新的答案。在我的机器上工作。
    • 嗨,@peterm,这太棒了。奇迹般有效。谢谢你。但是,它会一遍又一遍地更新,是否可以在更新之前检查它是否已经更新?
    • 我真的不想多次运行它,这就是我问的原因。我的意思是我想检查列字段是否为dd/mm/yyyy hh:nn:ss AM/PM。如果是,那我就按照你的说法更新,否则,放弃更新。
    • @Lyon 作者 ...为了能够安全地运行它... 我的意思正是如此 - 仅更新与模式匹配的行。为此,只需添加适当的WHERE 子句。查看更新的答案。
    【解决方案2】:

    由于您的列是字符串类型,因此您必须使用子字符串,例如(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)
    

    【讨论】:

    • 感谢您的回复。我正在使用 Access。我尝试了你的第一个 SQL 语句,没有任何反应。
    • 好吧,“什么都没有”不是很独立.. ;-) 你能限定你在做什么时得到什么,例如mid(recordTime,7,4) 吗?
    • 嗨,我从@peterm 那里得到了我想要的东西,非常感谢你和我在一起。
    猜你喜欢
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2022-01-19
    • 2021-08-17
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多