首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >验证MySQL中时间格式的有效性

验证MySQL中时间格式的有效性
EN

Stack Overflow用户
提问于 2013-09-14 20:59:10
回答 3查看 340关注 0票数 1

我已经在MySQL's date and time functions page周围寻找了很长一段时间,但是我没有找到一个函数来表明一种时间格式是否有效,例如,STR_TO_DATE函数。用户提供了一种格式,我希望接受尽可能广泛的格式。该格式稍后可以在脚本中与MySQL的STR_TO_DATE函数一起使用,该函数在失败时返回NULL (这是我希望通过在用户提供无效的时间格式时预先警告用户来避免这种情况)。我打算在临时表的帮助下以某种方式测试这些格式。

我不能使用STR_TO_DATE函数测试格式的有效性,因为传递给它的字符串值最终将由用户生成(在未来某个未定义的时间点),所以我不知道哪些字符串将传递给它。我曾希望DATE_FORMAT函数能解决我的问题,但它只是忽略了任何无效的格式说明符(例如,%Q没有任何含义,它将转换为Q)。在任何情况下都不会返回NULL,也不会产生警告。

有什么想法吗?

编辑:我能想到的唯一大致可靠的解决方案是列出所有MySQL支持的格式说明符,并将这些格式说明符与用户提供的格式中存在的所有格式说明符进行比较。

preg_match_all("/(?:(?<!%)|(?<=%%))(?:%%)*%([^%])/", $format, $matches);

正则表达式列出前面出现奇数百分号的所有字符。(这是必要的,因为百分号会自动跳转。)现在$matches[1]包含了这些字符的列表。

EN

回答 3

Stack Overflow用户

发布于 2013-09-14 23:11:55

如果您想知道字符串是否只包含有效的说明符,那么可以创建一个包含32个格式说明符的列表...

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a, b, c, d, D, e, f, h, H, i, I, j, k, l, m, M, p, r, s, S, T, u, U, v, V, w, W, x, X, y, Y, %

然后遍历格式字符串并检查有效的说明符...

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// pseudo-code... pretend format is an array of the format's characters
function is_valid_format(format) {
  for (x = 0; x < format.length; ++x) 
    if (format[x] == "%" &&
        (x + 1 >= format.length || 
        specifiers does not contain format[x + 1])
      return false

  return true
}

您还可以考虑提供一个预设日期格式字符串列表,供用户从中进行选择。除非用户记住了他们的格式字符串或说明符,否则我更倾向于选择日期格式字符串。

票数 0
EN

Stack Overflow用户

发布于 2013-09-15 06:20:48

使用Jquery验证引擎从客户端验证日期格式。

在PHP中,你可以验证日期( MySQL日期格式'2013-09-14‘)为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$date)) {
    return true;
}
票数 0
EN

Stack Overflow用户

发布于 2013-09-15 09:04:08

可以使用MySQL触发器来实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DELIMITER //
CREATE TRIGGER mytrigger BEFORE INSERT ON table_name
FOR EACH ROW BEGIN
IF (NEW.date_column REGEXP '^[0-9]{4}-[0-9]{2}-[0-9]{2}$') = 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='Wrong Input';
END IF;
END //

DELIMITER;

这是一个示例集,它将检查格式为“YYYY-MM-DD”的用户输入,如果用户输入的格式与指定的格式不同,则将抛出消息"Wrong “。

正则表达式可以根据需要进行调整。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18806342

复制
相关文章
display属性值有哪些_验证控件display属性
<html> <head> <meta charset=”utf-8″> <title>W3Cschool教程(w3cschool.cn)</title> <style> #main { width: 70px; height: 300px; border: 1px solid #c3c3c3; display: -webkit-flex; display: flex; /* 设置flex布局*/ -webkit-flex-wrap: wrap; flex-wrap: wrap;/*换行*/ -webkit-align-content: center; align-content: center; /*垂直对齐*/ }
全栈程序员站长
2022/11/01
2.2K0
display属性值有哪些_验证控件display属性
有什么方法可以快速筛选出 pitch 中的值 在0.2 > x > -0.2 的值?
前几天在Python钻石交流群有个叫【进击的python】的粉丝问了一个Python基础的问题,这里拿出来给大家分享下,一起学习下。
前端皮皮
2022/08/17
1.2K0
有什么方法可以快速筛选出 pitch 中的值 在0.2 > x > -0.2 的值?
Spring Boot 定义接口的方法是否可以声明为 private?
估计很少有人会把接口方法定义成 private 的吧?那我们不禁要问,如果非要定义成 private 的方法,那能运行起来吗?
江南一点雨
2021/04/02
6040
Java比较两个对象中属性值是否相同【使用反射实现】
在工作中,有些场景下,我们需要对比两个完全一样对象的属性值是否相等。比如接口替换的时候,需要比较新老接口在相同情况下返回的数据是否相同。这个时候,我们怎么处理呢?这里凯哥就使用Java的反射类实现。
凯哥Java
2022/12/16
3.6K0
用画小狗的方法来解释Java中的值传递
答案是 A旺财,changeName方法并没有把myDog的名称改了。如果你答错了,没关系,我要开始画小狗了,画完你就明白了;如果你答对了,但不太明白其中的原因,那我画的小狗也肯定能帮到你。
凯哥Java
2019/07/01
8900
【javascript】hasOwnProperty()方法检查对象是否有该属性
hasOwnProperty() 只会检查对象的自有属性,对象原形上的属性其不会检测;但是对于原型对象本身来说,这些原型上的属性又是原型对象的自有属性,所以原形对象也可以使用hasOwnProperty()检测自己的自有属性
唯一Chat
2022/09/27
1.1K0
使用JSON Schema来验证接口数据
该文介绍了如何使用JSON Schema来验证接口数据。JSON Schema是一种用于定义和验证JSON数据结构的工具。它可以定义一个JSON对象,并指定该对象中哪些字段是必须的,哪些字段是可选的,以及字段的类型和约束。使用JSON Schema可以方便地验证JSON数据是否符合预期的格式,并确保数据中的字段类型和约束符合要求。该文还介绍了如何使用Dojo Toolkit中的JSON Schema验证模块来验证JSON数据,并提供了相关的示例代码。
IMWeb前端团队
2017/12/29
2.3K0
使用JSON Schema来验证接口数据
最近在做一些关于JSON Schema的基建,JSON Schema可以描述一个JSON结构,那么反过来他也可以来验证一个JSON是否符合期望的格式,于是我想到之前lqlong 之前的一篇 《数据字段防卫探索》 发现JSON Schema可以做这个事情。
IMWeb前端团队
2019/12/04
2.1K0
Java 中如何判断数组中是否包含某个值?
public static boolean useLoop(String[] arr, String targetValue) { for(String s: arr){ if(s.equals(targetValue)) return true; } return false; }
水货程序员
2018/11/13
5.9K0
java9-可以在interface中定义私有方法了
在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法。只允许我们定义public访问权限的方法、抽象方法或静态方法。但是从Java 9 开始,Interface 接口中允许定义私有方法和私有静态方法。下面我们就来为大家介绍其语法规则,和为什么要有这样的设计。
字母哥博客
2020/10/14
1.7K0
如何检查 Java 数组中是否包含某个值 ?
在逛 programcreek 的时候,我发现了一些专注细节但价值连城的主题。比如说:如何检查Java数组中是否包含某个值 ?像这类灵魂拷问的主题,非常值得深入地研究一下。
用户7886150
2021/04/28
9.1K0
Java之判断数组中是否包含某个值
方式一:使用Arrays.asList(str).contains() public static boolean useList(String[] arr, String targetValue) { return Arrays.asList(arr).contains(targetValue); } 示例如下: String[] str={"学历教育","专业教育","通识教育","其它在职训"} ; if (!Arrays.asList(st
IT工作者
2022/02/12
4.2K0
Java|方法的定义(形参、实参、返回值)
方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。
算法与编程之美
2020/08/06
1.8K0
JNI:取得Java属性和设置Java属性值
可以使用GetObjectField来获取数组类型的属性。不过JNI提供了一系列方法获取数组的属性,后续介绍。
BUG弄潮儿
2022/03/08
2K0
一种自动的将自定义类序列化为JSON的方法
最近因为项目需求,需要将一些自定义的类序列化为JSON,网上有很多好用的第三方序列化工具,但都只能自动序列化一些基本类型,如NSNumber,NSString与NSDictionary这种,没有一种第三方工具提供直接将自定义类序列化的方法(至少据我所知:),而对于这种序列化自定义的类的需求,网上能查到的方法只有将自定义的类手动的转存为一个NSDictionary,然后再使用第三方工具来序列化。例如对于一个类Foo,有如下定义: @interface Foo : NSObject {   NSStri
阿新
2018/04/12
1.1K0
jquery判断数组中是否包含某个元素的值_java判断元素是否在数组中
如果arry数组里面存在”C#” 这个字符串则返回该字符串的数组下标,否则返回(不包含在数组中) -1
全栈程序员站长
2022/11/02
5.8K0
java 根据list对象中的一个属性值是否一致去重的简单做法
创建一个临时的数组 筛选要去重的数组,把对象是不重复的放到临时创建的数组中 判断这个去重的数组在不重复的数组中是否存在 再获得这个数组 一个foreach/for一定可以用stream来处理,去重也可以用lambda表达式来做 List<ApprovalChainInfoData> temp = new ArrayList<>(); approvalChainInfoData = approvalChainInfoData1.stream().filter(i -> {
gfu
2019/11/14
4.2K0
Java中interface属性和实例方法
A.接口Nameable无法编译。B.类Employee无法编译。C.类HR无法编译。D.输出John Doe。
FunTester
2020/02/17
2K0
【源头活水】一种高效评估预训练模型是否适合当前任务的方法
“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。
马上科普尚尚
2021/04/07
8220
【源头活水】一种高效评估预训练模型是否适合当前任务的方法
Java中抽象类和接口中可以有构造方法吗?
Java中抽象类和接口中可以有构造方法吗? -----------------------------------------------------------------------------
黑泽君
2018/10/11
2K0

相似问题

在AWS EC2免费层帐户上安装码头

13

AWS免费层上的Windows和Linux同时EC2实例

12

如何在AWS免费层上安装Laravel?

20

EC2的AWS免费层限制

16

无法在AWS免费层中启动第二个实例实例

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文