SQLite比较日期

SQLite比较日期,第1张

概述我有这个SQL语句: SELECT Geburtsdatum FROM KundeWHERE Geburtsdatum BETWEEN '1993-01-01' AND '2000-01-01' 但我得到一些奇怪的结果,如:2.02.1990 “Geburtsdatum”是DATE 任何建议或解决方案? 我的表格结构: CREATE TABLE Kunde ( Kunde_ID INTEGE 我有这个SQL语句:
SELECT Geburtsdatum FROM KundeWHERE Geburtsdatum BETWEEN '1993-01-01' AND '2000-01-01'

但我得到一些奇怪的结果,如:2.02.1990

“Geburtsdatum”是DATE

任何建议或解决方案?

我的表格结构:

CREATE table Kunde (  Kunde_ID INTEGER NOT NulL,Card INTEGER,Vorname VARCHAR(255) NOT NulL,Nachname VARCHAR(255) NOT NulL,Ort VARCHAR(255) NOT NulL,Strasse VARCHAR(255) NOT NulL,Postleitzahl VARCHAR(10) NOT NulL,Mail VARCHAR(255),Telefonnummer VARCHAR(255),Geburtsdatum DATE NOT NulL,Beitrittsdatum DATE NOT NulL,Geschlecht INTEGER NOT NulL,Land VARCHAR(255) NOT NulL DEFAulT 'Österreich',Bankname VARCHAR(255),Bankleitzahl VARCHAR(255),Kontonummer VARCHAR(255),GroupID INTEGER NOT NulL,Besucher INTEGER,Access BOolEAN,image BLOB NulL,writeDate DATE,drinkAbo BOolEAN,PRIMARY KEY (Kunde_ID) )
从文档:

sqlite does not have a storage class set asIDe for storing dates and/or times.

所以你的列不是完全存储为一个日期.进一步阅读,我们了解到指定为DATE的列实际上使用关联规则5存储为NUMERIC.

回到第1.2节:

REAL as Julian day numbers,the number of days since noon in Greenwich on November 24,4714 B.C. according to the proleptic Gregorian calendar.

好.所以让我们试试:

SELECT Geburtsdatum FROM KundeWHERE Geburtsdatum     BETWEEN julianday('1993-01-01') AND julianday('2000-01-01');

奇怪的是,SQL Fiddle似乎将DATE存储为字符串,上述方法不起作用.在这种情况下,应该:

SELECT Geburtsdatum FROM KundeWHERE date(Geburtsdatum)    BETWEEN date('1993-01-01') AND date('2000-01-01');

此外,在您的情况下,您似乎收到一些奇怪的(读取:本地化)格式.我想知道你的情况是否真的是一个字符串,只是使用不同的格式.你可以试试:

SELECT Geburtsdatum FROM KundeWHERE strftime('%d.%m.%Y',Geburtsdatum)    BETWEEN date('1993-01-01') AND date('2000-01-01');
总结

以上是内存溢出为你收集整理的SQLite比较日期全部内容,希望文章能够帮你解决SQLite比较日期所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1159995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存