在 mySQL 的 DateTimePicker1 中,日期由查询自动格式化和反转:
...DATE_FORMAT(`from_date`, "%d.%m.%Y") as `from_date`,...
但是后来,从 DateTimePicker1 开始,我不能把它变成 mySQL 格式,即 从02/27/2001转到2001-02-27,它不会自动转到那里,结果是2027-02-20。我正在尝试编码:
ADOQuery1.SQL.add('UPDATE table_name SET `from_date`=DATE_FORMAT("'+DateToStr(DateTimePicker1.Date)+'",''%Y-%m-%d'') WHERE `number` = 1');
在 SQL-query 之前尝试做DateTimePicker1.Format:='yyyy-M-d';
没有帮助。不同平台时间格式的奇怪情况——这个星球真的不能决定一个单一的时间标准吗?时间毕竟在一个计算的星球上。一般来说,偏离了问题的主题。怎样成为?如何从 DatePicker 将日期写入数据库
选项1:
通过替换显式指定
DateToStr(DateTimePicker1.Date)
格式FormatDateTime('yyyy-mm-dd', DateTimePicker1.Date)
选项 2:
通过替换
DateToStr(DateTimePicker1.Date)
为重载变量来显式指定格式DateToStr(DateTimePicker1.Date, MySQLFormatSettings)
在这种情况下,您需要提前声明一个变量
MySQLFormatSettings: TFormatSettings
并为其设置日期格式,并且最好设置小数点分隔符。选项 3:
使用参数查询
附言
对于程序的内部表示,越来越多地使用 ISO 8601:
YYYY-MM-DD
它是最通用的。不他不能。人们太执着于他们的历史和文化。
你有些不知所措
https://en.wikipedia.org/wiki/%D0%98%D1%81%D0%BB%D0%B0%D0%BC%D1%81%D0%BA%D0%B8%D0%B9_%D0 %BA%D0%B0%D0%BB%D0%B5%D0%BD%D0%B4%D0%B0%D1%80%D1%8C
https://ru.wikipedia.org/wiki/%D0%95%D0%B2%D1%80%D0%B5%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D0 %BA%D0%B0%D0%BB%D0%B5%D0%BD%D0%B4%D0%B0%D1%80%D1%8C
您应该避免将字符串转换为日期,反之亦然。
我
DateTimePicker1
有一个DateTimе
指向输入值的属性。在查询中,您必须尽可能指定参数。这将消除转换和类型检查的问题。它还允许数据库更好地优化查询。
参数必须有 type
ftDateTime
,请求本身会变成