GVKun编程网logo

如何通过SQL查询在数据库中仅保存时间而不保存日期

14

如果您对如何通过SQL查询在数据库中仅保存时间而不保存日期感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何通过SQL查询在数据库中仅保存时间而不保存日期的各种细节,此外还有关于c#–为什么我

如果您对如何通过SQL查询在数据库中仅保存时间而不保存日期感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何通过SQL查询在数据库中仅保存时间而不保存日期的各种细节,此外还有关于c# – 为什么我的类将一个集合保存到数据库而不保存另一个集合?、java – 如何使用SQL在数据库中插入当前日期和时间?、JPA在MySQL数据库中保存错误的日期、Mautic跟踪仅保存IP地址,而不保存数据库中的位置的实用技巧。

本文目录一览:

如何通过SQL查询在数据库中仅保存时间而不保存日期

如何通过SQL查询在数据库中仅保存时间而不保存日期

此查询将保存完整的日期和时间。但我只想保存时间而不是数据库中的日期。有任何查询可以做到这一点吗?

update table set current_time=now();

c# – 为什么我的类将一个集合保存到数据库而不保存另一个集合?

c# – 为什么我的类将一个集合保存到数据库而不保存另一个集合?

这真让我抓狂.我可以将其中一个集合保存在一个类中,但不能保存在另一个类中.

我有一个名为Category的类

public Category()
{
    Items = new List<Item>();
    Prices = new List<Price>();
}

这两种方法几乎完全相同.构造函数分别设置一个名为Category的属性及其Name和Price.

public virtual Item AddItem(string name)
{
    var item = new Item(this,name);
    Items.Add(item);
    return item;
}

public virtual Price AddPrice(decimal price)
{
    var price = new Price(this,price);
    Prices.Add(price);
    return price;
}

映射

public class CategoryMap : ClassMap<Category>
{
    public CategoryMap()
    {
       // Other properties

       HasMany(x=>x.Items).Cascade.AllDeleteOrphan();
       HasMany(x=>x.Prices).Cascade.AllDeleteOrphan();
    }
}

如您所见,两个集合的映射方式完全相同.

Price和Item的映射都具有相同的映射

References(x=>x.Category);

据我所知,几乎关于这两者的一切都是相同的.这是问题所在

category.AddItem(someName);
session.Save(category);    // Works

category.AddPrice(somePrice);
session.Save(category);    // Doesn't work

它们位于我用来填充测试数据库的文件中.保存项目工作正常.保存价格没有.类和映射是相同的.我无法弄清楚.

映射应该可以正常工作,因为调用构造函数直接工作正常

session.Save(new Price(category,1));

那么为什么Category保存一个集合而不另一个?我运行了探查器,该类甚至没有尝试保存Price集合.

更新:

正如Gabe在评论中指出的那样,如果我交换调用以便在Item之前调用Price,则Price进入数据库而Item不进入.

如果我在每次收集更新后调用session.Flush(),它都可以正常工作.我应该这样做,还是有办法修复我的映射,以便它的工作原理?

解决方法

尝试交换调用的顺序(首先添加价格,然后添加项目)以查看价格映射是否确实存在问题,或者问题是第二次调用失败.

关于flush – 大多数情况下你不需要显式调用flush,这是nHibernate在需要时(details here)在后台执行的操作.刷新模式不是映射问题(它是您可以设置的会话属性,但通常您不必这样做).

如果要在事务中包装代码,则不需要刷新.如果你不是,你应该是,这可能是你的问题.

using (var tx = Session.BeginTransaction()) {

    category.AddItem(someName);
    category.AddPrice(somePrice);
    session.Save(category);

    tx.Commit();
}

更新:我想我知道你的问题是什么.鉴于您的代码,看起来您正在创建一个新的类别对象并用数据填充它.在第一个Save()上,nHibernate执行自动刷新,因为它不能将category_id分配给子集合,直到它从db获取一个.但第二次,类别有一个id,所以会话不需要立即刷新.当不需要时,nHibernate对数据库不熟悉.正如我上面提到的,解决方案是始终使用事务来指定何时完成您的工作.

java – 如何使用SQL在数据库中插入当前日期和时间?

java – 如何使用SQL在数据库中插入当前日期和时间?

我使用以下代码,但sql中的DateTime字段表示为:
2005-04-08 00:00:00

我也想有时间.我该怎么改?

这是我的代码如下:

// Get the system date and time.
java.util.Date utilDate = new Date();
// Convert it to java.sql.Date
java.sql.Date date = new java.sql.Date(utilDate.getTime());
...
...
...
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setDate(1,date);

解决方法

尝试使用setTimestamp而不是setDate,因为时间戳是数据和时间的首选格式.

JPA在MySQL数据库中保存错误的日期

JPA在MySQL数据库中保存错误的日期

我的MySQL数据库中有一个表,其中有一个日期列:

+-------------------+---------------+------+-----+---------+----------------+
| Field             | Type          | Null | Key | Default | Extra          |
+-------------------+---------------+------+-----+---------+----------------+
| id                | bigint(20)    | NO   | PRI | NULL    | auto_increment |
| type              | varchar(50)   | NO   |     | NULL    |                |
| expiration        | date          | NO   |     | NULL    |                |

我正在将MySQL与JPA一起使用以保存日期。我有一个功能,用户可以选择最终日期范围,它将获得所有日期。

查看此代码(带有一堆SYSO)以尝试查看发生了什么…

@Override
    protected DateTime nextReference(DateTime reference) {
        System.out.println("Reference: " + reference.toString("dd-MM-YYYY"));
        DateTime plus = reference.plusMonths(1);
        System.out.println("One month from now: " + plus.toString("dd-MM-YYYY"));

        DateTime result = plus.withDayOfMonth(reference.getDayOfMonth());
        System.out.println("Final: " + result.toString("dd-MM-YYYY"));

        return result;
    }

这部分,结果很好:

Reference: 10-01-2017
One month from now: 10-02-2017
Final: 10-02-2017
Reference: 10-02-2017
One month from now: 10-03-2017
Final: 10-03-2017
Reference: 10-03-2017
One month from now: 10-04-2017
Final: 10-04-2017
Reference: 10-04-2017
One month from now: 10-05-2017
Final: 10-05-2017
Reference: 10-05-2017
One month from now: 10-06-2017
Final: 10-06-2017
Reference: 10-06-2017
One month from now: 10-07-2017
Final: 10-07-2017
Reference: 10-07-2017
One month from now: 10-08-2017
Final: 10-08-2017
Reference: 10-08-2017
One month from now: 10-09-2017
Final: 10-09-2017
Reference: 10-09-2017
One month from now: 10-10-2017
Final: 10-10-2017
Reference: 10-10-2017
One month from now: 10-11-2017
Final: 10-11-2017
Reference: 10-11-2017
One month from now: 10-12-2017
Final: 10-12-2017
Reference: 10-12-2017
One month from now: 10-01-2018
Final: 10-01-2018

好的,现在让我们转到保存部分:

@Transactional
private void saveTransactions(List<Transaction> transactions) {
    for (Transaction t : transactions) {
        System.out.println("Saving: " + t.getExpiration().toString("dd-MM-YYYY"));
        Transaction saved = dao.save(t);
        System.out.println("Saved: " + saved.getExpiration().toString("dd-MM-YYYY"));
    }
}

如您所见,我还添加了一些行来调试它。…在继续输出之前,请检查DAO:

public T save(T entity) {
    entityManager.persist(entity);
    return entity;
}

没什么大不了的…输出:

Saving: 10-02-2017
Saved: 10-02-2017
Saving: 10-03-2017
Saved: 10-03-2017
Saving: 10-04-2017
Saved: 10-04-2017
Saving: 10-05-2017
Saved: 10-05-2017
Saving: 10-06-2017
Saved: 10-06-2017
Saving: 10-07-2017
Saved: 10-07-2017
Saving: 10-08-2017
Saved: 10-08-2017
Saving: 10-09-2017
Saved: 10-09-2017
Saving: 10-10-2017
Saved: 10-10-2017
Saving: 10-11-2017
Saved: 10-11-2017
Saving: 10-12-2017
Saved: 10-12-2017

如您所见…应该没事吧?一切都在十号。

在我再次继续之前,请检查模型和转换器:

    //Attribute
    @Convert(converter = JpaDateConverter.class)
    private DateTime expiration;

//Converter

public class JpaDateConverter implements AttributeConverter<DateTime,Date> {

    @Override
    public Date convertToDatabaseColumn(DateTime objectValue) {
        return objectValue == null ? null : new Date(objectValue.getMillis());
    }

    @Override
    public DateTime convertToEntityAttribute(Date dataValue) {
        return dataValue == null ? null : new DateTime(dataValue);
    }

}

现在查看我的数据库:

mysql> select expiration from tb_transaction where notes = 3 and year(expiration
) = 2017;
+------------+
| expiration |
+------------+
| 2017-01-10 |
| 2017-02-10 |
| 2017-03-09 |
| 2017-04-09 |
| 2017-05-09 |
| 2017-06-09 |
| 2017-07-09 |
| 2017-08-09 |
| 2017-09-09 |
| 2017-10-09 |
| 2017-11-10 |
| 2017-12-10 |
+------------+
12 rows in set (0.00 sec)

对于某些奇怪的原因,某些日期保存在9号而不是10号!

无警告,MySQL驱动程序无错误或什么都没有。

请帮助大家!

EDIT 交易类别:

@Entity
@Table(name = "tb_transaction")
public class Transaction implements Cloneable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Enumerated(STRING)
    private TransactionType type;

    @Convert(converter = JpaDateConverter.class)
    private DateTime expiration;

Mautic跟踪仅保存IP地址,而不保存数据库中的位置

Mautic跟踪仅保存IP地址,而不保存数据库中的位置

位置数据由MaxMind数据库或其他服务的设置处理。

确保已正确设置MaxMind iplookup cron服务,并且具有该服务或其他服务(例如Clearbit)的适当API凭据。

https://docs.mautic.org/en/setup/cron-jobs#update-maxmind-geolite2-ip-database

今天关于如何通过SQL查询在数据库中仅保存时间而不保存日期的讲解已经结束,谢谢您的阅读,如果想了解更多关于c# – 为什么我的类将一个集合保存到数据库而不保存另一个集合?、java – 如何使用SQL在数据库中插入当前日期和时间?、JPA在MySQL数据库中保存错误的日期、Mautic跟踪仅保存IP地址,而不保存数据库中的位置的相关知识,请在本站搜索。

本文标签: