标签: str-to-date

为什么TFormatSettings没有按预期运行?

我希望以下代码可以工作:

program Project3;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

var
  FS: TFormatSettings;

const
  DF = 'yyyymmdd';

begin
  try
   WriteLn(FormatDateTime(DF, Now));

   FS := TFormatSettings.Create;
   FS.ShortDateFormat := DF;
   WriteLn(StrToDate('20121219', FS));

   ReadLn;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Run Code Online (Sandbox Code Playgroud)

为什么会抛出异常,说"20121219"不是有效日期?这不正是通过TFormatSettings应该做的事情吗?

delphi str-to-date

14
推荐指数
1
解决办法
2182
查看次数

MySQL STR_TO_DATE 和时区

我的系统时区是UTC+3。

当我在 MySQL 中使用时间戳列时,它们是我的时区的输出。因此,如果时间戳列的 UTC 时间为 00:00,那么对我来说它会显示为 03:00。

我需要使用使用值填充时间戳列STR_TO_DATE

例如我这样做:

INSERT INTO `dates`(`created`) 
VALUES (STR_TO_DATE('2016-11-01 00:00:00', '%Y-%m-%d %H:%i:%s'))
Run Code Online (Sandbox Code Playgroud)

插入的值按原样显示:2016-11-01 00:00:00

我的结论是:STR_TO_DATE认为其输入位于系统时区(UTC+3)内。

但我有 UTC 时区的日期时间字符串。我应该怎么办?该查询在 Liquibase 迁移中运行,因此我无法使用@@global.time_zone时区转换等变量。

mysql timezone datetime liquibase str-to-date

5
推荐指数
1
解决办法
1443
查看次数

mysql STR_TO_DATE无效

我有一个varchar名为列的表birthday

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `birthday` varchar(30) COLLATE utf16_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf16 COLLATE=utf16_unicode_ci AUTO_INCREMENT=5 ;

INSERT INTO `test` (`id`, `birthday`) 
VALUES (1, '20041225'),
       (2, '2004-12-25'),
       (3, '19941225'),
       (4, '19941201');
Run Code Online (Sandbox Code Playgroud)

我尝试运行此查询:

SELECT str_to_date(birthday,"%Y%m%d") 
FROM `test` 
WHERE 1
Run Code Online (Sandbox Code Playgroud)

但它总是返回具有空值的行.

如果我运行查询:

SELECT str_to_date('20141225',"%Y%m%d") 
FROM `test` 
WHERE 1
Run Code Online (Sandbox Code Playgroud)

它会回来 2014-12-25

那我的查询有什么问题?

mysql str-to-date

3
推荐指数
1
解决办法
9445
查看次数

MySQL STR_TO_DATE() 函数返回 null

我想将我的日期格式从转换MMMM dd,yyyyyyyy-MM-dd.

我尝试使用以下方法:

SET @dt_to = STR_TO_DATE(dateTo, '%d-%m-%Y');
Run Code Online (Sandbox Code Playgroud)

但返回一个NULL值。

如何将我的日期yyyy-MM-dd转换为 MySQL 中的格式?

编辑:

我正在创建一个过程,其中在参数中dateTo接收了 的值。它是MMMM dd, yyyy格式的日期。例如October 10, 2015

笔记:

NULL当我使用时,整个查询不会返回:

SET @dt_to = dateTo;
Run Code Online (Sandbox Code Playgroud)

mysql str-to-date

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

str-to-date ×4

mysql ×3

datetime ×1

delphi ×1

liquibase ×1

timezone ×1