关键词:
【中文标题】在 MySQL 中搜索日期时间【英文标题】:Search datetime in MySQL 【发布时间】:2012-10-27 02:11:02 【问题描述】:我有一个 MySQL 数据库,有一个表,其中 Time 的类型为 Nvachar(50) 并且 其值 类似于“05/09” /2012 20:53:40:843" *(月-日-年时:分:秒:毫秒)*
现在我想查询“10/05/2012 01:00:30 PM”之后的时间记录。 在进行查询之前,我在 C# 中有代码将其转换为“05/10/2012 13:00:30”。 我的查询:
SELECT * FROM ABCDFEGH WHERE capTime > '05/10/2012 13:00:30' LIMIT 0, 1
但我没有记录。所以请告诉我我怎样才能让它返回记录在上述时间之后有时间???
更多信息我的 C# 代码:
string tableName = "ABCDFEGH";
string date = "05/10/2012 13:00:30";
var query = "SELECT * FROM " + tableName + " WHERE capTime > '" + date + "' LIMIT 0, 1";
var cmd = new MySqlCommand(query, connection);
MySqlDataReader dataReader = null;
try
dataReader = cmd.ExecuteReader();
我实在是太抱歉了。我犯了一个错误,查询必须是
SELECT * FROM ABCDFEGH WHERE capTime > '05/10/2012 13:00:30' LIMIT 0, 1
这个查询成功返回我需要的记录:)
但是我怎么把它打错了
SELECT * FROM ABCDFEGH WHERE capTime > '05-10-2012 13:00:30' LIMIT 0, 1
再次抱歉,话题关闭。但是 tks for evveryone 试过 :)
【问题讨论】:
@PraveenKumar 你不能好好评论吗?为什么这么多!!!
?
【参考方案1】:
使用TIMESTAMPDIFF()
架构
CREATE TABLE ABCDFEGH (`right` varchar(3), `time` datetime);
INSERT INTO ABCDFEGH (`right`, `time`)
VALUES
('Yes', '2012-10-02 13:00:30'),
('No', '2012-10-15 13:00:30');
SQL 代码
SELECT * FROM ABCDFEGH
WHERE TIMESTAMPDIFF(MINUTE, time, '2012-10-05 13:00:30') > 0
LIMIT 0, 1
说明
TIMESTAMPDIFF()
返回 datetime_expr2 – datetime_expr1,其中 datetime_expr1 和 datetime_expr2 是日期或日期时间表达式。一个表达式可以是日期,另一个是日期时间;日期值在必要时被视为具有时间部分“00:00:00”的日期时间。结果的单位(整数)由 unit 参数给出。
小提琴:http://www.sqlfiddle.com/#!2/244cc/1 datetime
小提琴:http://www.sqlfiddle.com/#!2/063b3/1 varchar(50)
PS1: Time
可能是保留字。请避免使用它。否则将其与反引号 (`) 一起使用。
PS2:时间的格式是YYYY-MM-DD
而不是反过来。
【讨论】:
时间为列名,该列的数据类型为 Nvachar(50)。它的值类似于“05/09/2012 20:53:40:843” 好的,更新答案。给我一点时间。 @BuiAkinori 你现在能检查一下吗? 我刚刚使用了你的新答案,我得到了一个“截断不正确的日期时间值:'04/13/2012 11:25:36:241'”的列表 @BuiAkinori 已添加架构和 DDL。【参考方案2】:首先,您为什么将日期保存为NVARCHAR
?如果您仍然能够将其更改为 DATETIME
数据类型及其上的所有记录,那就更好了。
但如果没有,你可以使用STR_TO_DATE
。
SELECT *
FROM tableName
WHERE STR_TO_DATE(`capTime`, '%m/%d/%Y %H:%i:%s:%x') >
STR_TO_DATE('05/10/2012 13:00:30', '%c/%d/%Y %H:%i:%s')
See SQLFiddle Demo
来源
STR_TO_DATE DATE Formats更新 1
您的查询很容易受到SQL Injection
的影响。为了避免它
代码sn-p,
string tableName = "ABCDFEGH";
string date = "05/10/2012 13:00:30";
String query = "SELECT * FROM " + tableName + " WHERE STR_TO_DATE(`capTime`, '%m/%d/%Y %H:%i:%s:%x') > STR_TO_DATE(@dateHere, '%c/%d/%Y %H:%i:%s')";
using (MySqlConnection connection = new MySqlConnection("connectionStringHere"))
using (MySqlCommand command = new MySqlCommand())
command.Connection = connection;
command.CommandType = CommandType.Text;
command.CommandText = query;
command.Parameters.AddwithValue("@dateHere",date)
MySqlDataReader dataReader = null;
try
dataReader = cmd.ExecuteReader();
catch(MySqlException e)
// do something here
// don't suppress the error
【讨论】:
我试了一下,得到了很多“Inccorect time value:'241' for function str_to_time' 241 是毫秒。你在你的查询中错过了那部分吗?【参考方案3】:我建议使用 DATETIME
数据类型而不是 NVARCHAR。以YYYY-MM-DD HH:MM:SS
格式存储日期,即native DATETIME format recognized by MySQL。
还可以使用相同格式的日期文字。
此建议的两个原因:首先,DATETIME takes only 8 bytes,而不是最多 150 字节,这是多字节 50 字符 varchar 的潜在大小。
其次,DATETIME 的排序顺序将与时间顺序相同。因此,如果您在 Time
列上创建索引,您的 >
比较可以从索引中受益。因此,您的查询会更快。
【讨论】:
@PraveenKumar,是的,我看到这个问题被标记为mysql
。我的建议是针对 MySQL 的。
NVARCHAR
在 MySQL 中没有吗?
@PraveenKumar,MySQL 支持 NVARCHAR 作为VARCHAR CHARACTER SET utf8
的别名。
我同意你的账单。你确定@PraveenKumar 吗?使用 Jquery Datepicker 进行 PHP MYSQL 日期范围搜索
】使用JqueryDatepicker进行PHPMYSQL日期范围搜索【英文标题】:PHPMYSQLDateRangeSearchwithJqueryDatepicker【发布时间】:2013-10-1305:09:37【问题描述】:我尝试了几种不同的解决方案来解决我的问题,但我似乎找不到一个可行的方法。我正在... 查看详情
如何在 MySQL 中选择最近 30 天的日期?
...ENSUBDATE(NOW(),INTERVAL30DAY)ANDNOW();这可能吗?【问题讨论】:搜索是你的朋友。看这 查看详情
mysql日期时间格式使用c#
...-02-0320:10:50【问题描述】:我需要使用C#代码在mysql记录中搜索有关日期值的一些数据。我在c#中使用以下代码,但我找不到记录。请帮帮我。我的C#代码:Selectdistinctv.*fromVenvinnerjoinDesdonv.venid=d.venidandcast(d.despdateasd 查看详情
在 JSON mysql 中的两个 iso 日期之间搜索
】在JSONmysql中的两个iso日期之间搜索【英文标题】:searchbetweentwoisodateinJSONmysql【发布时间】:2021-10-0305:54:00【问题描述】:下面是我的JSON,它保存在mysql表的response列中"data":"submit":false,"lastName":"abc","firstName":"xys","metadata":,"createDa... 查看详情
在mysql查询中使用php time()函数计算两个日期之间的差异
...lquery【发布时间】:2013-01-2420:51:22【问题描述】:我已经搜索过这个,但我找不到任何东西。我有一个文章表。当我写新文章时,我使用phptime()函数将时间写入mysql表。我的桌子是id文章时间时间数据类型为IN 查看详情
在日期时间对象python中搜索
】在日期时间对象python中搜索【英文标题】:Searchingwithinadatetimeobjectpython【发布时间】:2017-01-1407:02:51【问题描述】:我试图定位日期时间对象的指定范围内的年份。我尝试过用几种不同的方式做一个for循环,但不幸的是我似乎... 查看详情
在 Java 中处理 MySQL 日期时间和时间戳
】在Java中处理MySQL日期时间和时间戳【英文标题】:HandlingMySQLdatetimesandtimestampsinJava【发布时间】:2011-03-2009:54:20【问题描述】:在java应用程序中,在使用日期时间和时间戳的混合使用MySQL数据库提取和输入日期信息方面,什么... 查看详情
在 PHP/MYSQL 中计算过滤器记录 [重复]
...题描述】:我有一个基于PHP/MYSQL的应用程序,其中有一个搜索区域,当您按日期搜索时,我会显示在这些日期之间有可用的属性/酒店。我还有一些其他过滤器,例如区域、酒店拥有的设施等。现在一切正常,但cutomer现在希望在... 查看详情
使用 mysql 和 php 搜索除日期字段外的整个表
】使用mysql和php搜索除日期字段外的整个表【英文标题】:searchentiretableexceptdatefieldsusingmysqlandphp【发布时间】:2014-07-3010:02:56【问题描述】:我有一张大表,想一次性搜索所有字段,但有些字段是日期,所以我创建的搜索在遇到... 查看详情
如何使用时区信息在 MySQL 中存储日期时间
】如何使用时区信息在MySQL中存储日期时间【英文标题】:HowtostoreadatetimeinMySQLwithtimezoneinfo【发布时间】:2013-11-1912:39:03【问题描述】:我有数千张在坦桑尼亚拍摄的照片,我想将每张照片的拍摄日期和时间存储在MySQL数据库中... 查看详情
Ruby活动记录在mysql中插入日期时间而不是时间
】Ruby活动记录在mysql中插入日期时间而不是时间【英文标题】:Rubyactiverecordinsertingdatetimeinsteadoftimeinmysql【发布时间】:2016-07-2100:07:44【问题描述】:RailsActiveRecord保存在插入查询中使用datetime,尽管mysql中的数据类型是time并且在... 查看详情
日期时间值如何存储在 mysql 中?
】日期时间值如何存储在mysql中?【英文标题】:Howdatetimevaluesarestoredinmysql?【发布时间】:2016-08-2413:09:44【问题描述】:我是数据库世界的新手。我正在从java程序发送一个日期时间值,例如“2016-04-2709:00:00”,以便将其保存到my... 查看详情
如何在 SqlAlchemy / Mysql 中存储时区感知日期时间值?
】如何在SqlAlchemy/Mysql中存储时区感知日期时间值?【英文标题】:HowtostoretimezoneawaredatetimevaluesinSqlAlchemy/Mysql?【发布时间】:2020-07-1915:58:51【问题描述】:我想在mysql数据库中存储一个Python时区感知日期时间属性。我使用SqlAlchemy... 查看详情
在 mysql 查询中计算日期和持续时间
】在mysql查询中计算日期和持续时间【英文标题】:Computedatesanddurationsinmysqlquery【发布时间】:2012-01-2321:00:26【问题描述】:我有一个示例表(table_name:track_task),如下所示:task_idstagelog_date----------------------------------------312011-0... 查看详情
在mysql中混合模式匹配和日期时间函数
】在mysql中混合模式匹配和日期时间函数【英文标题】:mixingofpatternmatchinganddatetimefunctionsinmysql【发布时间】:2012-02-0409:20:05【问题描述】:我在混合模式匹配和curdate()函数时遇到问题。下面是表结构,其中一些字段当前日期每... 查看详情
你如何在 MySql 中找出给定日期时间的 DayOfTheWeek?
】你如何在MySql中找出给定日期时间的DayOfTheWeek?【英文标题】:HowdoyoufindouttheDayOfTheWeekgivenadatetimeinMySql?【发布时间】:2009-12-0107:34:28【问题描述】:给定mysql5中的日期时间列,我想找出星期几?但是函数DAYOFWEEK为星期日返回1... 查看详情
如何在 MySQL 和 PHP 中处理日期和时间?
】如何在MySQL和PHP中处理日期和时间?【英文标题】:HowtohandledatesandtimesinMySQLandPHP?【发布时间】:2013-08-2908:52:19【问题描述】:我正在使用CodeIgniter2.1.x和MySQL。我在使用mysql列类型DATETIME和TIMESTAMP之间找到了很多建议,但我不确... 查看详情
MySql 5.7 版本不允许在日期时间字段中插入完整日期*
】MySql5.7版本不允许在日期时间字段中插入完整日期*【英文标题】:MySqlnotallowtoinsertfulldateindatetimefieldinversion5.7.*【发布时间】:2019-01-2108:23:51【问题描述】:只想通过配置更改此设置。不改变我的查询当前的SQL_MODE是STRICT_TRANS_TA... 查看详情